Compare commits

..

3 Commits

Author SHA1 Message Date
0a14374f0a Merge pull request 'Merge changes to webrings' (#5) from development into main
All checks were successful
Website Sync / website-sync (push) Successful in 4s
Reviewed-on: #5
2026-03-15 22:02:15 -03:00
75655be103 Preliminary adition to transing the internet webring, and tweaks and optimization to previous code regarding javascript to php rewrite, more concise and legible code functions.
All checks were successful
Website Sync / website-sync (push) Successful in 5s
2026-03-15 21:59:05 -03:00
ccaf930265 (tentative) addition to transfem webring, this includes a write to the original javascript script to php (currently using local information for performance reasons). Have to update ID when properly accepted into the webring!
All checks were successful
Website Sync / website-sync (push) Successful in 5s
2026-03-14 15:17:37 -03:00
29 changed files with 1355 additions and 14 deletions

Binary file not shown.

Binary file not shown.

Binary file not shown.

View File

@@ -58,22 +58,28 @@ img { image-rendering: pixelated;}
font-weight: normal;
font-style: normal;}
@font-face {
font-family: 'basiic';
src: url('../fonts/basiic.ttf') format('truetype');
font-weight: normal;
font-style: normal;
}
@font-face {
font-family: 'molecule31';
src: url('../fonts/molecule31_font.ttf') format('truetype');
font-weight: normal;
font-style: normal;}
@font-face {
font-family: 'beefont';
src: url('../fonts/beefont.ttf') format('truetype');
font-family: 'ms pgothic';
src: url('../fonts/ms_pgothic.ttf') format('truetype');
font-weight: normal;
font-style: normal;}
* { text-align: center; }
body { font-family: 'special elite', honyaji, basiic, monospace, serif, sans-serif; }
body { font-family: 'special elite', monospace, serif, sans-serif; }
/* ----------------- Color -------------------- */

View File

@@ -81,14 +81,23 @@
align-content: center;}
.webrings .auto-scroll {
height: 65%;
width: fit-content;
flex-direction: row;
animation-name: scroll-webring-mobile;}
.webrings .scroll_one, .webrings .scroll_two {
gap: 2em;
flex-direction: row;}
.webrings .scroll_one > div , .webrings .scroll_two > div {
flex-shrink: 0;
height: 100%;
width: fit-content;
}
.webrings .auto-scroll > * > div img {
height: 60px;
height: 100%;
width: auto;}
.scroll_below-clip-box {
@@ -127,6 +136,10 @@
from {transform: translateX(calc(-50%));}
to {transform: translateX(0%);}}
.webrings .auto-scroll {
animation-duration: 25s;
}
/* Vertical scroll text */
.verticalscroll .auto-scroll {
animation-name: scroll-vertical;

Binary file not shown.

After

Width:  |  Height:  |  Size: 875 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 200 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 205 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 946 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.0 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 10 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 906 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 919 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 863 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.0 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 636 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 610 B

View File

@@ -0,0 +1,40 @@
<?php
// Gets a file given an array with sources
function getFile(array $source){
$selected_source = $source["sources"][$source["selected_source"]];
if ($selected_source["source"] === "local") {
$file = file_get_contents(__DIR__ . $selected_source["url"]);
} else if ($selected_source["source"] === "internet") {
$curl = curl_init($selected_source["url"]);
curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
$file = curl_exec($curl);
if ($file === false) {
echo "Error: " . curl_error($curl);
exit;
}
curl_close($curl);
}
return $file;
}
// Returns the given sub-string given a initial search pattern, and a final end pattern.
function extractString(string $string,string $start_pattern, string $end_pattern) {
$start_pos = strpos($string,$start_pattern,strlen($start_pattern));
$end_pos = strpos($string,$end_pattern, $start_pos);
$extracted_string = substr($string, $start_pos, $end_pos - $start_pos);
return $extracted_string;
}
// Self-explanatory
function scrapeWebsiteSites(array $source,string $start_pattern, string $end_pattern) {
$script = getFile($source);
$websites = extractString($script,$start_pattern,$end_pattern);
return $websites;
}

View File

@@ -0,0 +1,9 @@
<?php
declare(strict_types=1);
require_once("common_webrings.inc.php");
require_once('transfemwebring_contr.inc.php');
require_once('transfemwebring_view.inc.php');
FEMRINGrender();

View File

@@ -0,0 +1,73 @@
// based again off https://transring.neocities.org/ring.js :)
// which is based off https://juneish.neocities.org/resources/webstring/
{
const VALID_WIDGET_TYPES = ["transgender", "nonbinary"]
let transfemring = {
// sitelist (oldest to newest)
// strip the protocol off
sites: [{"id":1,"description":"You're here!","site_link":"fem.nz","author":"me","in_the_ring":true,"notes":"","created_at":"2025-10-07T08:10:09.659Z","updated_at":"2025-10-07T08:10:09.659Z"},{"id":2,"description":"transfem webdev :p","site_link":"skyler.lol","author":"Skyler!","in_the_ring":false,"notes":"","created_at":"2025-10-07T08:10:35.275Z","updated_at":"2025-10-07T08:10:35.275Z"},{"id":3,"description":"just a personal site for music, musings, and blog posts! ran by a transfem enby :)","site_link":"transferns.neocities.org","author":"Andie/Fern","in_the_ring":true,"notes":"","created_at":"2025-10-07T08:10:57.429Z","updated_at":"2025-12-11T02:14:39.833Z"},{"id":4,"description":"the most evil and repulsive website on planet earth","site_link":"cresentri.com","author":"cresentri","in_the_ring":true,"notes":"","created_at":"2025-10-07T08:11:30.742Z","updated_at":"2025-10-07T08:11:30.883Z"},{"id":5,"description":"i'm messing around with trying to learn how to use html for somewhat interesting things i guess","site_link":"iseel.neocities.org","author":"IseeL","in_the_ring":true,"notes":"","created_at":"2025-10-07T08:12:18.126Z","updated_at":"2025-10-07T08:29:03.148Z"},{"id":6,"description":"Just a place for me to share info about my projects and talk about things i enjoy \u003c3","site_link":"vivslakes.moe","author":"Viv","in_the_ring":true,"notes":"","created_at":"2025-10-07T08:13:05.476Z","updated_at":"2025-10-07T08:13:05.567Z"},{"id":7,"description":"all kinds of things!","site_link":"fionaruthbo.neocities.org","author":"Fiona Ruthbo","in_the_ring":true,"notes":"","created_at":"2025-10-07T08:14:16.412Z","updated_at":"2025-10-07T08:14:16.428Z"},{"id":8,"description":"Poetry, halftones, and Twitchy.","site_link":"klara.nz","author":"me!","in_the_ring":true,"notes":"","created_at":"2025-10-07T08:39:07.132Z","updated_at":"2025-10-07T08:57:26.399Z"},{"id":9,"description":"a little birdie on the internet :)","site_link":"kestrel.pet","author":"Kestrel","in_the_ring":true,"notes":"","created_at":"2025-11-15T06:57:16.625Z","updated_at":"2025-11-15T06:57:26.268Z"},{"id":10,"description":"autistic artist musician webdev dragon(girl?)thing; very gay; rawr","site_link":"ytd.wtf","author":"Yuri the Dragon","in_the_ring":true,"notes":"","created_at":"2025-12-30T09:57:00.232Z","updated_at":"2025-12-30T11:19:58.022Z"},{"id":11,"description":"This website runs on my living room heater","site_link":"izzy.kiwi","author":"Just Izzy","in_the_ring":false,"notes":"","created_at":"2025-12-30T11:19:12.953Z","updated_at":"2026-01-01T02:54:57.059Z"},{"id":12,"description":"a dump for all of my projects and adhd thoughts","site_link":"ikelene.dev","author":"Ikelene","in_the_ring":true,"notes":"","created_at":"2026-01-23T01:52:44.443Z","updated_at":"2026-01-23T01:52:44.463Z"},{"id":13,"description":"contains my mind space, which includes gaming, references, easter eggs, art, programming, etc!","site_link":"theabsoluterealm.com","author":"ezra","in_the_ring":true,"notes":"","created_at":"2026-01-23T01:54:27.672Z","updated_at":"2026-01-23T01:56:27.520Z"},{"id":14,"description":"Just a trans girl that likes radios, computers, creative freedom, art, etc not much more to it!","site_link":"cafepots.neocities.org","author":"Cafe_Pots","in_the_ring":true,"notes":"","created_at":"2026-01-30T08:36:39.133Z","updated_at":"2026-01-30T08:36:51.946Z"},{"id":15,"description":"Extension of my cute, sparkley, sprinkle filled transfem brain! ദ്ദി◝ ⩊ ◜)","site_link":"winzpir.neocities.org","author":"Winzpir/Angel","in_the_ring":true,"notes":"","created_at":"2026-02-20T01:31:47.843Z","updated_at":"2026-02-20T01:31:47.843Z"}],
root: "https://fem.nz"
}
console.log(transfemring)
transfemring.index = location.href.startsWith("file://") ? 0 : transfemring.sites.findIndex((entry) => location.href.includes("://" + entry.site_link));
let widget = document.currentScript.dataset.widget ?? "transgender";
function urlWithWidget(path) {
return `${transfemring.root}/ring/${widget}/${path}`
}
if (!VALID_WIDGET_TYPES.includes(widget)) {
console.log("To web admin: transfem webring widget should have data-widget set to one of the following if configured (attribute will default to 'transgender'):", VALID_WIDGET_TYPES)
console.log(`data-widget currently set to: ${widget}`)
widget = "transgender"
}
if (transfemring.index === -1) {
document.currentScript.outerHTML = `
<div>
<div class="transfem-ring" style="display: flex; justify-content: center; align-items: center; gap: 3.278%; max-width: 244px; image-rendering: pixelated">
<a href="${transfemring.root}" target="_top"><img width="168" height="61" src="${urlWithWidget("banner.png")}"></a>
</div>
(not yet, but maybe soon!)
</div>
`;
} else {
function nextActive() {
let currentIndex = transfemring.index + 1
while (!location.href.includes(transfemring.sites[currentIndex % transfemring.sites.length].site_link)) {
if (transfemring.sites[currentIndex % transfemring.sites.length].in_the_ring) {
return transfemring.sites[currentIndex % transfemring.sites.length]
}
currentIndex++
}
return transfemring.sites[currentIndex % transfemring.sites.length]
}
function previousActive() {
let currentIndex = transfemring.index - 1
while (!location.href.includes(transfemring.sites.at(currentIndex).site_link)) {
if (transfemring.sites.at(currentIndex).in_the_ring) {
return transfemring.sites.at(currentIndex)
}
currentIndex--
}
return transfemring.sites[currentIndex % transfemring.sites.length]
}
let next = "https://" + nextActive().site_link
let prev = "https://" + previousActive().site_link;
document.currentScript.outerHTML = `
<div class="transfem-ring" style="display: flex; justify-content: center; align-items: center; gap: 3.278%; max-width: 244px; image-rendering: pixelated">
<a href="${prev}" target="_top" style="width: 12.295%">
<img width="30" height="32" src="${urlWithWidget("arrow.png")}" alt="previous site">
</a>
<a href="${transfemring.root}" target="_top" style="width: 68.852%">
<img width="168" height="61" src="${urlWithWidget("banner.png")}" alt="transfem webring">
</a>
<a href="${next}" target="_top" style="width: 12.295%">
<img width="30" height="32" src="${urlWithWidget("arrow.png")}" alt="next site" style="transform: scaleX(-1);">
</a>
</div>
`;
}
}

View File

@@ -0,0 +1,112 @@
<?php
declare(strict_types=1);
// File sources, images & scripts
$TRANSFEMRING_FILES = [
"nonbinary" => [
"arrow_path" => "../../../img/webrings/transfem_enby_arrow.png",
"banner_path" => "../../../img/webrings/transfem_enby_banner.png"
],
"transgender" => [
"arrow_path" => "../../../img/webrings/transfem_trans_arrow.png",
"banner_path" => "../../../img/webrings/transfem_trans_banner.png"
]
];
$TRANSFEMRING_SCRIPT_SOURCE = [
"selected_source" => 1,
"sources" =>
[["url" => "https://fem.nz/ring/transfemring.js",
"source" => "internet"],
["url" => "/transfemwebring.js",
"source" => "local"]]
];
// Specific variables for script
$TRANSFEMRING_ROOT = "https://fem.nz";
$TRANSFEMRING_VALID_WIDGET_TYPES = ["transgender", "nonbinary"];
// Personal identifiers/choices
$TRANSFEMRING_WIDGET_TYPE = $TRANSFEMRING_VALID_WIDGET_TYPES[1];
$TRANSFEMRING_ID = 8;
// Functions
function primarySplit(string $array) {
$i = 0;
while (strlen($array) !== 0) {
// Strip coma if found
if (str_starts_with($array,',')) {
$array = substr($array,1);
}
// Get substring position and length
$start_pos = 1;
$end_pos = strpos($array,"}",1);
$item_len = $end_pos - $start_pos;
// Save website into array, and strip array
$return_array[$i] = substr($array,$start_pos,$item_len);
$array = substr($array,$item_len+2); // +2 from { and }
$i++;
}
return $return_array;
}
function secondarySplit(string $sub_array) {
while (strlen($sub_array) !== 0){
if (str_starts_with($sub_array,',')) {
$sub_array = substr($sub_array,1);
}
$key_start_pos = 1;
$key_end_pos = strpos($sub_array,"\"",1);
$key_len = $key_end_pos - $key_start_pos;
$key = substr($sub_array,$key_start_pos,$key_len);
$value_start_pos = $key_len + 3; // +3 from " , " and :
// Check if key is quoted
if (strpos($sub_array,"\"",$value_start_pos) != $value_start_pos) {
$keyhasQuotes = FALSE;
$value_end_pos = strpos($sub_array,",");
} else {
$value_start_pos++; // +1 from "
$value_end_pos = strpos($sub_array,"\"",$value_start_pos);
$keyhasQuotes = TRUE;
}
$value_len = $value_end_pos - $value_start_pos;
$value = substr($sub_array,$value_start_pos,$value_len);
$return_sub_array[$key] = $value;
$sub_sub_array_len = $key_len + $value_len + 3; // +3 from " , " and :
if ($keyhasQuotes) {
$sub_sub_array_len = $sub_sub_array_len + 2; // +2 from " and "
}
$sub_array = substr($sub_array,$sub_sub_array_len);
}
return $return_sub_array;
}
$transfemring_sites = scrapeWebsiteSites($TRANSFEMRING_SCRIPT_SOURCE,'sites: [',']');
$transfemring_sites = primarySplit($transfemring_sites);
for ($i = 0; $i < sizeof($transfemring_sites); $i++) {
$depured_transfemring_sites[$i] = secondarySplit($transfemring_sites[$i]);
}
$transfemring_sites = $depured_transfemring_sites;
for ($i = 1; $i < count($transfemring_sites); $i++){
if ($transfemring_sites[$i]['id'] == $TRANSFEMRING_ID) {
$transfem_prev = 'https://' . $transfemring_sites[($i-1)]["site_link"];
$transfem_current = 'https://' . $transfemring_sites[($i)]["site_link"];
$transfem_next = 'https://' . $transfemring_sites[($i+1)]["site_link"];
$found = TRUE;
}
}
if (!isset($found)) {
echo ("ERROR ID NOT FOUND");
}

View File

@@ -0,0 +1,20 @@
<?php
declare(strict_types=1);
function FEMRINGrender(){
global $TRANSFEMRING_ROOT, $TRANSFEMRING_FILES, $TRANSFEMRING_WIDGET_TYPE, $transfem_prev, $transfem_next;
?>
<div class="transfem-ring" style="display: flex; justify-content: center; align-items: center; image-rendering: pixelated;">
<a href="<?php echo $transfem_prev ?>" target="_top" style="height: 100%; width: 15.574%;">
<img src="<?php echo $TRANSFEMRING_FILES[$TRANSFEMRING_WIDGET_TYPE]["arrow_path"]; ?>" alt="previous site" style="vertical-align: middle; height: 100%;">
</a>
<a href="<?php echo $TRANSFEMRING_ROOT ?>" target="_top" style="height: 100%; width: 68.852%;">
<img src="<?php echo $TRANSFEMRING_FILES[$TRANSFEMRING_WIDGET_TYPE]["banner_path"]; ?>" alt="transfem webring" style="vertical-align: middle; height: 100%;">
</a>
<a href="<?php echo $transfem_next ?>" target="_top" style="height: 100%; width: 15.574%;">
<img src="<?php echo $TRANSFEMRING_FILES[$TRANSFEMRING_WIDGET_TYPE]["arrow_path"]; ?>" alt="next site" style="transform: scaleX(-1); vertical-align: middle; height: 100%;">
</a>
</div>
<?php
}

View File

@@ -0,0 +1,9 @@
<?php
declare(strict_types=1);
require_once("common_webrings.inc.php");
require_once('transingtheinternet_contr.inc.php');
require_once('transingtheinternet_view.inc.php');
TRANSINGrender();

View File

@@ -0,0 +1,926 @@
// webstring by june @ juneish.neocities.org
{
let webring = {
// sites in the ring
// remove the https://
sites: [
//"elijahposttrash.neocities.org",
"napkinonline.nekoweb.org",
"cossechan.nekoweb.org",
"rainfrog.nekoweb.org",
"lotusmoonstart.neocities.org",
"foxlore.neocities.org",
"butterfly3000.neocities.org",
"zimawtf.neocities.org",
"princesschainsaw.neocities.org",
"homopile.neocities.org",
"ruitherga.neocities.org",
"tudorcottage.neocities.org",
"jorse.neocities.org",
"the-ivesofmarch.neocities.org",
"pombogay.neocities.org",
"ries.neocities.org",
"coffeeplant.neocities.org",
"eviltmasccatboypili.neocities.org",
"kiwiandoesthings.place",
"liquid-sunshine.neocities.org",
"winchuckster.neocities.org",
"marlena.app",
"clare.nekoweb.org",
"lexthesilly.neocities.org",
"giantmolecular.cloud",
"caterpillarangel.neocities.org",
"quinnbozon.nekoweb.org",
"endy-boi.neocities.org",
"thelostsignal.neocities.org",
"tesseractcube.neocities.org",
"americanachronism.neocities.org",
"attissillies.neocities.org",
"chirpylaura.neocities.org",
"xenon-starz.neocities.org",
"yoyle.city",
"julians-art.neocities.org",
"djsng.neocities.org",
"maehat.neocities.org",
"plaguecore.neocities.org",
"enteragoodnamehere.neocities.org",
"brooklynights.nekoweb.org",
"5k1n3473r.neocities.org",
"loserlost.neocities.org",
"knife-in-the-coffee.neocities.org",
"wheel-of-fortune.neocities.org",
"starboystation.neocities.org",
"lemonsprout.neocities.org",
"bloodbathspite.neocities.org",
"stargazing.nekoweb.org",
"b1temark.neocities.org",
"vinventolin.neocities.org",
"mfdook.neocities.org",
"conners1corner.neocities.org",
"backtick.nekoweb.org",
"odriscoll.neocities.org",
"fireye.coffee",
"iso-bel.computer",
"xpvm.net",
"jaennymorton.neocities.org",
"flimsknoght.neocities.org",
"www.honeyteaaa.art",
"androbohij.cc",
"nickyturner.neocities.org",
"colgator.neocities.org",
"vabu.nekoweb.org",
"the-disorganized-mind-palace.neocities.org",
"clementinesyumehaven.neocities.org",
"shittymeat999.neocities.org",
"starfield.nekoweb.org",
"weban3e1.neocities.org",
"kaidoesartzz.nekoweb.org",
"natsfixations.neocities.org",
"bensect.space",
"wackysworld.neocities.org",
"webgutter.neocities.org",
"iseel.neocities.org",
"samsolarsystem.neocities.org",
"thestrangeemporium.neocities.org",
"chromix.nekoweb.org",
"eonsadrift.nekoweb.org",
"juliesqueaks.neocities.org",
"danzig.nekoweb.org",
"barkode.neocities.org",
"mustymixtape.neocities.org",
"charmiesworld.neocities.org",
"kadyjerry.neocities.org",
"notes-from-michaels-desk.neocities.org",
"sleeping-satan.neocities.org",
"integratedvoices.neocities.org",
"ephesusmoon.neocities.org",
"aglovale.nekoweb.org",
"friendshapedplant.neocities.org",
"animalgirlssanctuary.neocities.org",
"cynderthekitsune.nekoweb.org",
"spaceblog.neocities.org",
"skyllrk.neocities.org",
"femtanyl03.neocities.org",
"jennie-archives.neocities.org",
"mcdougmuffin.neocities.org",
"bunnyboyblog.neocities.org",
"wizardhell.neocities.org",
"mightbemod.neocities.org",
"esiacannotforget.neocities.org",
"skyler.lol",
"pokeymanatee4.xyz",
"hereafterlaughter.neocities.org",
"fresh1219.neocities.org",
"letsgoleelee.neocities.org",
"rue04.neocities.org",
"cubething.dev",
"mostsilliest.nekoweb.org",
"mavisdeluna.art",
"somebit.neocities.org",
"themarshe.neocities.org",
"cryotato.github.io",
"girlboybird.hotglue.me",
"crowguinisonline.neocities.org",
"daisybells.neocities.org",
"crypticamanita.neocities.org",
"orbitt.sbs",
"0ldw3bl0v3r.neocities.org",
"socsie.space",
"exclave.city",
"michoislost.nekoweb.org",
"kero.net",
"musicalmatchalatte.gay",
"somewhere-city.neocities.org",
"bellpepperfan.neocities.org",
"ancientangel333.neocities.org",
"thealleyway.neocities.org",
"maycithegal.nekoweb.org",
"ikelene.nekoweb.org",
"jackpurrin.me",
"angelnetcast.com",
"ourfriendsplace.neocities.org",
"ceefax.nekoweb.org",
"mrwrzr.neocities.org",
"darxori.neocities.org",
"sugarsamu.neocities.org",
"leonie.lgbt",
"april.nekoweb.org",
"computersoda.neocities.org",
"neonspiral.neocities.org",
"werewiire.neocities.org",
"ollie-okay.neocities.org",
"csarhere.nekoweb.org",
"mezbezls.neocities.org",
"playoffs-nem.neocities.org",
"peppers-wasteland.neocities.org",
"wlodekm.nekoweb.org",
"barkingdead.neocities.org",
"myepicsite424.neocities.org",
"ridvenge.neocities.org",
"digitaldoggi.com",
"goodgirl.dev",
"mossyscorner.neocities.org",
"dospuntostr.es",
"rakii0zuu.neocities.org",
"the-icarus-archive.neocities.org",
"kaiswonderland.nekoweb.org",
"crowpunk.co",
"gl1tz1.monster",
"itztheo.neocities.org",
"deadvenge.neocities.org",
"thoushallkill.neocities.org",
"gwurb.neocities.org",
"starsforthelivinganddead.neocities.org",
"livvy94.neocities.org",
"mocha8686.neocities.org",
"ancientcrypt.neocities.org",
"jaspertheepic.neocities.org",
"crazed4sallymanders.neocities.org",
"summer-slushpups-hut.neocities.org",
"applejuicey.neocities.org",
"guzu2squared.neocities.org",
"martin-is-a-real-person.neocities.org",
"cosm-os.neocities.org",
"decomdiatom.neocities.org",
"mistakemp4.neocities.org",
"pogmom.me",
"masterluuc.neocities.org",
"cyntheticgal.neocities.org",
"moths-clubhouse.neocities.org",
"smoothscallywag.neocities.org",
"cwd.moe",
"korumeow.dev",
"cascaria.neocities.org",
"roguepebble.neocities.org",
"lizzardencounter.neocities.org",
"jamie.monster",
"natthecat.net",
"laprogrammatriceverde.crabdance.com",
"nathanntan.neocities.org",
"softfuzzycedar.neocities.org",
"didelphidae.neocities.org",
"darkxwolf17.nekoweb.org",
"wateringfruits.neocities.org",
"boredhobo.neocities.org",
"furbycoven.neocities.org",
"darkmomokocore.neocities.org",
"lilys-place.nekoweb.org",
"calzonie.neocities.org",
"jesterknight.neocities.org",
"lorekeeping.neocities.org",
"yokosplace.xyz",
"kris-scapes.neocities.org",
"digitalvenus.neocities.org",
"mewardgay.neocities.org",
"candyteeth.neocities.org",
"futch.nekoweb.org",
"okaynana.neocities.org",
"artielas.neocities.org",
"pucha1985.neocities.org",
"alienspaceinvader.neocities.org",
"smugwolf.neocities.org",
"nilistisk.neocities.org",
"dyingsignals.love",
"bananasplit.nekoweb.org",
"twinkpad.neocities.org",
"deadon.rip",
"icarusdean.neocities.org",
"estivalbloom.neocities.org",
"nightmarefish.neocities.org",
"planthouse.neocities.org",
"emo-mruczek.pet",
"mechagic.party",
"yuros-nest.neocities.org",
"carrick-pre.github.io",
"orlandoscoffee.neocities.org",
"bonesdale.neocities.org",
"elu-isa.neocities.org",
"cult.ist",
"killanova.neocities.org",
"usahanaa.neocities.org",
"necrodancing.neocities.org",
"enderwebs.neocities.org",
"p1xieparadis3.neocities.org",
"wyrppad.neocities.org",
"sluglife.neocities.org",
"elixirical.nekoweb.org",
"ghostingpen.neocities.org",
"cindyblossom.neocities.org",
"www.bearadactyl.net",
"lerariemann.nekoweb.org",
"mayonmnnaise.nekoweb.org",
"defoko-mp3.neocities.org",
"dipschitt.neocities.org",
"wanwanworld.neocities.org",
"chrysallis.neocities.org",
"plushcowz.neocities.org",
"sugarangel.neocities.org",
"toonilumi.neocities.org",
"tohellwithit.nekoweb.org",
"paulsworld.neocities.org",
"teddys-grove.neocities.org",
"simplyjason.neocities.org",
"cadapra.neocities.org",
"avaforward.neocities.org",
"toribytez.neocities.org",
"sudo.pink",
"jello01000101.neocities.org",
"rollergirlz.nekoweb.org",
"voidway.nekoweb.org",
"vanillachai42.neocities.org",
"snailburger.neocities.org",
"angelchime.neocities.org",
"verzephobe.neocities.org",
"happigreencactus.neocities.org",
"kaijukity.moe",
"dexterdaybreaker.neocities.org",
"celest3.neocities.org",
"branchlines.neocities.org",
"musubi.nekoweb.org",
"cutsfrombrokenglass.neocities.org",
"cherryangel.neocities.org",
"kid-koda.neocities.org",
"basophie.neocities.org",
"maddisonstoff.neocities.org",
"justpattie.neocities.org",
"toothspit.neocities.org",
"winteryear.neocities.org",
"neurasun.neocities.org",
"https://jackpurrin.me/",
"victrix.neocities.org",
"autostereogrammusic.com",
"ananotsocute.neocities.org",
"honeyedcharlatan.neocities.org",
"fleasonrats.neocities.org",
"oozy.neocities.org",
"dustbunnybedroom.neocities.org",
"siffarooni.neocities.org",
"blanche.nekoweb.org",
"follyfox.neocities.org",
"mothpup.pet",
"thicccatz.neocities.org",
"lucky-goose.neocities.org",
"betty-plays-bass.neocities.org",
"karchah.neocities.org",
"psyclone.nekoweb.org",
"gojidragon.com",
"atomicgothic.neocities.org",
"morocerasus.neocities.org",
"otto-the-coolest.neocities.org",
"citadark.neocities.org",
"fish.golf",
"glyph555.neocities.org",
"cmbcoldspot.neocities.org",
"feelingmachine.moe",
"dollblooms.neocities.org",
"max-iwtaco.neocities.org",
"roxsquires.gay",
"natural-stupidity.neocities.org",
"mothinary.neocities.org",
"invadergvim.neocities.org",
"pastel-skies.nekoweb.org",
"zaytnzcity.neocities.org",
"aria.coffee",
"melody-is.gay",
"gatorboi.neocities.org",
"disctwo.net",
"xduskashesreal.neocities.org",
"toasty.place",
"loserr-blog.neocities.org",
"puka-muriska.neocities.org",
"dynazenta.neocities.org",
"sea-angel-blu.neocities.org",
"form-and-thearchive.neocities.org",
"ann-html.neocities.org",
"lamebrain.neocities.org",
"calicocamcorders.neocities.org",
"mammifereaile.nekoweb.org",
"deyx.neocities.org",
"witchesbrew.nekoweb.org",
"possiblyaxolotl.com",
"onemoredoughnut.neocities.org",
"pudo.neocities.org",
"wizardzz.neocities.org",
"parkerspixels.neocities.org",
"coffeeknife.nekoweb.org",
"bearsjunkjournal.neocities.org",
"benitengu.neocities.org",
"mjdxp.neocities.org",
"floraltriptych.nekoweb.org",
"upsidedownhourglass.neocities.org",
"hello-m00n.github.io/personal_website",
"chanteryuutai.neocities.org",
"blobii.neocities.org",
"sillygirlclub.neocities.org",
"heyitsrksmith.com",
"skyla.moe",
"l0bst3rf4c3.neocities.org",
"flowergarden-cafe.neocities.org",
"byteemily.nekoweb.org",
"chrysalis.nehulus-vagus.com",
"ruby-makes-bad-games.neocities.org",
"dreamvalley.nekoweb.org",
"axelotl3001.neocities.org",
"www.callistoashley.dev",
"minonii.neocities.org",
"elfwyn.neocities.org",
"jessieisironicallym3.neocities.org",
"quaggos.neocities.org",
"centipederot.neocities.org",
"blinkie-net.neocities.org",
"rainbowgirl.neocities.org",
"skelenby.neocities.org",
"crowycawcaw.neocities.org",
"marcypink.neocities.org",
"kickaha.neocities.org",
"cyberfangz.site",
"deadraccoon.neocities.org",
"auroradynia.com",
"rubisdubis.nekoweb.org",
"moonflyxspace.neocities.org",
"luka-the-normal-boy.neocities.org",
"cobwebears.neocities.org",
"sophiebites.me",
"kimn.neocities.org",
"jupy.wtf",
"nerdforeternity.neocities.org",
"liliancipher.neocities.org",
"luvrksknskyejourney.org",
"starry622.neocities.org",
"sapphic-cafe.net",
"orcassiea.nekoweb.org",
"possumlark.org",
"captainicarus.neocities.org",
"mossmurder.neocities.org",
"dreamsofvinushka.neocities.org",
"r1xstixx420.neocities.org",
"aevuslabyrinth.neocities.org",
"smyrlok.neocities.org",
"thejay-ester.neocities.org",
"femboy.art",
"computerguts.gay",
"hench4life.neocities.org",
"hexate.neocities.org",
"oyasumihologram.nekoweb.org",
"voltdrake.neocities.org",
"insqueeration.neocities.org",
"stylrtechnologies.com",
"fruitycircus.com",
"nepetaquest.nekoweb.org",
"adilene.net",
"ivycryptid.nekoweb.org",
"bride2be.neocities.org",
"e10.neocities.org",
"alcatrazisland.neocities.org",
"aetherie-99.neocities.org",
"eringrimalkin.neocities.org",
"mortland.neocities.org",
"mintchipdotcom.neocities.org",
"cake.moe",
"sillyhearts.neocities.org",
"bscit.dev",
"ultrakill.nekoweb.org",
"chimerathing.neocities.org",
"catatonia.neocities.org",
"b1ttersw33t.neocities.org",
"stars-sys.neocities.org",
"remnantmaru.neocities.org",
"rainmirage.art",
"mettatons-fan-corner.neocities.org",
"postalbutch.neocities.org",
"illomen.neocities.org",
"rainparade.nekoweb.org",
"bramblingaround.neocities.org",
"columbiasthoughts.neocities.org",
"sunnishinez.neocities.org",
"alyxia.dev",
"sugrstrz.com",
"acidicalchemist.nekoweb.org",
"weatherchannel.neocities.org",
"electro-magnets.neocities.org",
"leamsiwl.nekoweb.org",
"asterhalloween.neocities.org",
"analoguecatalogue.neocities.org",
"sorrowshowers.neocities.org",
"stelfield.neocities.org",
"sepharia.neocities.org",
"sleepycircus.neocities.org",
"aestuarium.me",
"asmodeusvulcan.neocities.org",
"ender-the-phantom.neocities.org",
"multicolor-anarchist.neocities.org",
"beaus-silly-folder.nekoweb.org",
"ivyswell-tavern.neocities.org",
"tilde-os.neocities.org",
"din0r4wr.neocities.org",
"astracelestine.nekoweb.org",
"rockseize.neocities.org",
"breaker-one.neocities.org",
"oceansandy02.nekoweb.org",
"rawrware.neocities.org",
"octopen.neocities.org",
"lupinus.neocities.org",
"terrorbabs.neocities.org",
"zenithtrajectory.neocities.org",
"usprisoner.neocities.org",
"pentumbra.neocities.org",
"twitch.cymru",
"scenemime.neocities.org",
"chromaeleon.neocities.org",
"mossypawprints.neocities.org",
"columbidaes.neocities.org",
"hammerheader.neocities.org",
"simpolomeo.neocities.org",
"p1n4.neocities.org",
"felixtheghost.neocities.org",
"bushdoctor.neocities.org",
"cresentri.com",
"wallgof.neocities.org",
"kitnomaly.neocities.org",
"sunkissed-feathers.neocities.org",
"t-hates-you.neocities.org",
"iodatalog.neocities.org",
"disasterpiece.neocities.org",
"therianava.li",
"dragonworld.neocities.org",
"cosyivy.xyz",
"traversetown.neocities.org",
"wriorango.neocities.org",
"gh0sted.neocities.org",
"dqs114.neocities.org",
"serasworld.neocities.org",
"starhaven.neocities.org",
"nickolox.com",
"fawn.nekoweb.org",
"liondrakes.neocities.org",
"crowsite.neocities.org",
"euclids-exception.neocities.org",
"wrldrevolving.neocities.org",
"strawberryysnow.neocities.org",
"thecatingrey.neocities.org",
"novaverie.nekoweb.org",
"june-is-scared.nekoweb.org",
"skyedarkclaw.neocities.org",
"toriii.neocities.org",
"ephemeralstar.neocities.org",
"cybr.gay",
"ghostsalt.neocities.org",
"thievery.neocities.org",
"kasperspace.nekoweb.org",
"pastaaa1.neocities.org",
"kaymartz.neocities.org",
"mothwiingz.neocities.org",
"v1v1sect1on.nekoweb.org",
"amethystweb.nekoweb.org",
"rachelowens.co.uk",
"cicadastatic.neocities.org",
"pysgodyn3.neocities.org",
"ques-nook.neocities.org",
"vampfag.top",
"candybaroque.neocities.org",
"quesadillawizard.neocities.org",
"silas-hw.github.io",
"firefairy.neocities.org",
"noisecorvid.neocities.org",
"digitaldaydreams.neocities.org",
"cassiecandles.net",
"mxbo.neocities.org",
"virtually-isolated.neocities.org",
"anomalous.monster",
"bonbon-ufo.neocities.org",
"ibbofazblog.neocities.org",
"miniwildpanda.neocities.org",
"tvkid.online",
"koyanthrope.neocities.org",
"livormortis.neocities.org",
"zelltronic.neocities.org",
"goosetank.neocities.org",
"butchboothill.neocities.org",
"lopster.neocities.org",
"angelwood.xyz",
"spycicl.neocities.org",
"shuriee.neocities.org",
"sticktrix.neocities.org",
"mannequin.fun",
"blue-miaou.neocities.org",
"transferns.neocities.org",
"germpills.neocities.org",
"atarax.neocities.org",
"lifelesscold.neocities.org",
"raum.neocities.org",
"goleihm.neocities.org",
"fuzzybabycrow.neocities.org",
"kidwiththechemicalz.neocities.org",
"testtubesterone.nekoweb.org",
"cayway.neocities.org",
"www.fluffpumpkin.net",
"westwinddogs.cc",
"ikuda.eu",
"home.illuc.xyz",
"kakotheris.nekoweb.org",
"shadowfae.neocities.org",
"starlitseas.neocities.org",
"wolfdeer.neocities.org",
"fromthebog.neocities.org",
"bohwoah.neocities.org",
"pixelatedpeachjuice.neocities.org",
"atomixe.neocities.org",
"slushiecafe.neocities.org",
"sea-of-colors.neocities.org",
"cyrussoleil.neocities.org",
"zombi.neocities.org",
"confetticake.neocities.org",
"falin.moe",
"onetimeoccam.com",
"anon1mity.neocities.org",
"lesrallizes.neocities.org",
"robynnesnest.click",
"freakygabry.neocities.org",
"alphacentauri.neocities.org",
"haetae.pages.gay",
"mooface.nekoweb.org",
"msx.gay",
"draggianuniverse.neocities.org",
"sepulchredsacrament.neocities.org",
"spacemadness.neocities.org",
"datoxicwaltz.neocities.org",
"canine-anarchy.neocities.org",
"cannibalpilled.neocities.org",
"bloodthirstymasquerade.neocities.org",
"pawpyrus.nekoweb.org",
"muffinzhouze.neocities.org",
"realismomagico.nekoweb.org",
"themightyloser.nekoweb.org",
"sealzie.neocities.org",
"sillywilly22.neocities.org",
"basi.nya.pub",
"daisywhisp.neocities.org",
"ray0fsunsh1ne.neocities.org",
"st4rguy.neocities.org",
"subterraneanhomesickalien.neocities.org",
"sunny-cities.neocities.org",
"suprsaturatd.neocities.org",
"lucienzeal.neocities.org",
"interstellarsystem.neocities.org",
"sociallyhazardous.neocities.org",
"lunya.nekoweb.org",
"thespaceshanty.neocities.org",
"mermora.neocities.org",
"leyy.neocities.org",
"disuko.neocities.org",
"whit.moe",
"im-disco-baby.neocities.org",
"digital-goddess.nekoweb.org",
"raven-files.neocities.org",
"bugkisser.neocities.org",
"chimeramanticore.neocities.org",
"mism4tchedsocks.neocities.org",
"jackandthearics.neocities.org",
"kepler-16b.neocities.org",
"treefungusxx.neocities.org",
"prunusavium.neocities.org",
"selkiehimbo.neocities.org",
"norisowl.neocities.org",
"mametzwood.neocities.org",
"dupersuperholly.neocities.org",
"ashtonsivibing.neocities.org",
"turbuggy.neocities.org",
"magicaldoll.neocities.org",
"boatemhq.neocities.org",
"olliveen.neocities.org",
"glamourbeast.neocities.org",
"digitalcat.neocities.org",
"caesthoffe.neocities.org",
"deletys.neocities.org",
"unsungstorywiki.neocities.org",
"granolaria.neocities.org",
"wumsley.neocities.org",
"madeinv.love",
"moonlightmyopia.neocities.org",
"gammagoop.neocities.org",
"koy.fish",
"halcybutton.neocities.org",
"betazz.neocities.org",
"infinitebearr.neocities.org",
"all-seeing-bunny.neocities.org",
"halcantdothat.neocities.org",
"zoneoffun.neocities.org",
"melancholic-entrails.neocities.org",
"lilithdev.neocities.org",
"wolfsite.neocities.org",
"alienyuri.neocities.org",
"unit00.neocities.org",
"voxel.gay",
"catgirlcassie.neocities.org",
"atari404.neocities.org",
"rosrets.neocities.org",
"miastonished.github.io",
"lilly.nekoweb.org",
"cupcakesthebulldog.neocities.org",
"joolianjay.neocities.org",
"clowdywings.neocities.org",
"muttthecowcat.neocities.org",
"xxfizzybloodxx.neocities.org",
"slysable.neocities.org",
"theevergreengardens.neocities.org",
// "achromatic-azurevizor.neocities.org",
"syrupnx.space",
"revived.neocities.org",
"sammylux.neocities.org",
"lambbones.neocities.org",
"hymnforascarecrow.neocities.org",
"fem.nz",
"subspaceember.neocities.org",
"shattered-glass.neocities.org",
"sugarfantasies.neocities.org",
"melxncholyman.neocities.org",
"pastellerie.neocities.org",
"magooka.neocities.org",
"celli.neocities.org",
"squidcrusher.neocities.org",
"sabrin.party",
"priro.pro",
"1dkreally.neocities.org",
"oliscrabwife.neocities.org",
"harvest-home.neocities.org",
"droptherapy.neocities.org",
"spiderlily.neocities.org",
"fukounaglr.neocities.org",
"coffinthusiast.neocities.org",
"riddler.nekoweb.org",
"www.cryptie.dev",
"thekirbysphere.neocities.org",
"leskowitz.neocities.org",
"milkyway.moe",
"zj.neocities.org",
"tehuan.neocities.org",
"murderscene.neocities.org",
"prophetesque.gay",
"kyoofyardale.neocities.org",
"bundleofstyx.neocities.org",
"lavender-cowboy.neocities.org",
"dog-brain.neocities.org",
"pixelglade.net.au",
"jettsecret.neocities.org",
"caitsith.neocities.org",
"moonsidedreams.neocities.org",
"mspaintdemon.neocities.org",
"codecreature.neocities.org",
"thesomnus.neocities.org",
// "funnyorangecat-dotcom.neocities.org",
"girlfailure.neocities.org",
"sunmiflowers.com",
"trashcannt.neocities.org",
"themby.neocities.org",
"garudyne.neocities.org",
"doumeli.neocities.org",
"siph.neocities.org",
"bubshub.neocities.org",
"quinnnnn.neocities.org",
"phoebe.digital",
"ciliaris.neocities.org",
"gaycomputerdog.neocities.org",
"frognet.neocities.org",
// "nonkiru.art",
"finn-all-uh.org",
"florpzgalaxy.neocities.org",
"wonderscape.neocities.org",
"www.lexiqqq.com",
"dulcesilly.neocities.org",
"chocolaterevel.neocities.org",
"savior-god.neocities.org",
"infini.neocities.org",
"manyface.neocities.org",
"plourples.com",
"this.squirrel.rocks",
"lucard.neocities.org",
"s1nez.nekoweb.org",
"monsterboy.neocities.org",
// "sizztuna.neocities.org",
"aceynk.neocities.org",
"mordecaialba.com",
"canadiancoded.neocities.org",
"morethanyoubelieve.neocities.org",
"foggybear42.neocities.org",
"117.zone",
"scottisite.neocities.org",
"minozomi.neocities.org",
"digibun.neocities.org",
"butch-barks.neocities.org",
"nerucom.neocities.org",
"smellybead.neocities.org",
"preservedfigs.uk",
"anchorgutz.neocities.org",
"foxthing.neocities.org",
"klomfel.neocities.org",
"wrender.neocities.org",
// "milosinternetdiary.neocities.org",
"cherylcherylcheryl.neocities.org",
"shenaniganery.neocities.org",
"jens-world-of-hyperfixation.neocities.org",
"aribluejeans.neocities.org",
"www.write-on.org",
"asralore.neocities.org",
"snowyfin.neocities.org",
"tertiaryapocalypse.neocities.org",
"killing-machine.neocities.org",
"spacemonkeyz.neocities.org",
"freaksaint.neocities.org",
"ghost-game.neocities.org",
"colortraks.net",
"screamingegg.neocities.org",
"jayspace.neocities.org",
"phantomrats.neocities.org",
"mercydreams.neocities.org",
"sech1p.ovh",
"wappydog.neocities.org",
"leizy8499.neocities.org",
"fearofmusic.neocities.org",
"serenegecko.neocities.org",
"slasherboy.neocities.org",
"bisexualmale04.net",
"f3r4l-c4tg1rl.neocities.org",
"asteromorph.neocities.org",
"realgaudin.uk",
// "s1llyguy.neocities.org",
"itpuddle.com",
// "neotrinity.xyz",
// "zonks27.neocities.org",
"cadeion.neocities.org",
"corvidae.digital",
"catboo.neocities.org",
"ttaxyy.neocities.org",
// "gyrobreaka.neocities.org",
"zinesbylennon.neocities.org",
"poetofu.neocities.org",
"ilovebeingtrans.neocities.org",
"spettri.neocities.org",
"whirlwind.neocities.org",
"stric9l0l.neocities.org",
"swiftyshq.neocities.org",
"crystal.tilde.institute",
"isactuallyabear.neocities.org",
"statusq.cc",
"astralvrz.github.io",
"dogspit.nekoweb.org",
"flower-killer.neocities.org",
"phrogee.neocities.org",
"burialcloth.neocities.org",
"maxxywaxxy.neocities.org",
"orion-overdrive.neocities.org",
"fangzzz.neocities.org",
"aryllsappreciations.neocities.org",
"twansgendew.net",
"jubiland.neocities.org",
"cyberdemon.neocities.org",
"space-bar.neocities.org",
// "bunnieforie.neocities.org",
// "hadalzone.neocities.org",
"pinkvampyr.leprd.space",
"thecorvidking.neocities.org",
"confettiguts.gay",
"callmecannibal.neocities.org",
// "nasunikki.neocities.org",
"shinyexe.neocities.org",
"smokoswebzone.gay",
"kelpeater.neocities.org",
"deviltown.neocities.org",
"r-temisia.neocities.org",
"crashtestdummy.neocities.org",
"punkwasp.leprd.space",
"nyacat.moe",
"theabsoluterealm.com",
// "layercake.neocities.org",
// "juicemachine.neocities.org",
"predictable1993.neocities.org",
"item64.neocities.org",
"cvnnbl.neocities.org",
// "squeezeoats.neocities.org",
"icosahedr.online",
"theaio.neocities.org",
"qso404.neocities.org",
"nimravidae.neocities.org",
"mizuki.world",
// "milestailsprower.neocities.org",
"foolsparadise.neocities.org",
"redrevelry.neocities.org",
"drakonic.zone",
"onlywonder.net",
// "heck.computer",
// "diluculo.neocities.org",
"glassyhouse.neocities.org",
"purplehello98.neocities.org",
"causeistayedaway.neocities.org",
// "rockinroller.neocities.org",
// "cranknet.com",
"p3p.neocities.org",
"hunipyon.neocities.org",
"beebfreeb.neocities.org",
"laikacore.neocities.org",
"the-bat-house.neocities.org",
// "least-mouse.github.io",
"faeriebottled97.neocities.org",
"worldsaddress.neocities.org",
"thoughts-and-collections.neocities.org",
"shiroganes.neocities.org",
"out.neocities.org",
"mysweetpiano.neocities.org",
"mikaorangeart.neocities.org",
"galactixstar.neocities.org",
"cyberneticdryad.neocities.org",
// "bajablasphemy.neocities.org",
"blagi.neocities.org",
"sanguinariacanadensis.neocities.org",
// "mincerafter42.github.io",
"transrats.neocities.org",
"friday-girl.neocities.org",
"flutteristhebest.neocities.org",
"sunnyday.neocities.org",
"sleepy-sage.neocities.org",
"wolf-on-the-web.neocities.org",
"alan460.is-hella.gay",
"therift.neocities.org",
// "keysklubhouse.com",
"ballonlea.net",
"compulsivecomputer.net",
"scourgescloset.neocities.org",
"lambchapel.neocities.org",
"troy-sucks.neocities.org",
"transring.neocities.org",
],
// widget html
// PREV and NEXT are replaced with neighbors' urls
widgets: {
default: `
<div id="transring" style="display: flex; align-items: center; gap: 3.278%; max-width: 244px; image-rendering: pixelated">
<a href="PREV" target="_top" style="width: 12.295%"><img width="100%" src="https://transring.neocities.org/widget/trans/left.png" alt="previous site"></a>
<a href="https://transring.neocities.org" target="_top" style="width: 68.852%"><img width="100%" src="https://transring.neocities.org/widget/trans/button.png" alt="transing the internet"></a>
<a href="NEXT" target="_top" style="width: 12.295%"><img width="100%" src="https://transring.neocities.org/widget/trans/right.png" alt="next site"></a>
</div>
`,
nb: `
<div id="transring" style="display: flex; align-items: center; gap: 3.278%; max-width: 244px; image-rendering: pixelated">
<a href="PREV" target="_top" style="width: 12.295%"><img width="100%" src="https://transring.neocities.org/widget/nb/left.png" alt="previous site"></a>
<a href="https://transring.neocities.org" target="_top" style="width: 68.852%"><img width="100%" src="https://transring.neocities.org/widget/nb/button.png" alt="transing the internet"></a>
<a href="NEXT" target="_top" style="width: 12.295%"><img width="100%" src="https://transring.neocities.org/widget/nb/right.png" alt="next site"></a>
</div>
`,
cloud: `<div id="transring" style="display: flex; justify-content: center; align-items: center; gap: 4px; image-rendering: pixelated">
<a href="PREV" target="_top"><img src="https://transring.neocities.org/widget/cloud/left.png" alt="previous site"></a>
<a href="https://transring.neocities.org" target="_top"><img src="https://transring.neocities.org/widget/cloud/button.png" alt="transing the internet"></a>
<a href="NEXT" target="_top"><img src="https://transring.neocities.org/widget/cloud/right.png" alt="next site"></a>
</div>`,
error: `<div>
<a href="https://transring.neocities.org" target="_top"><img src="https://transring.neocities.org/widget/trans/button.png"></a>
<div style="font-size: 0.75em; text-align: center">(this site isn't part of the webring... yet!)</div>
</div>`,
},
};
// code
webring.idx = webring.sites.findIndex(site => location.href.startsWith(site, 8));
document.currentScript.outerHTML = webring.idx === -1 ? webring.widgets.error :
(webring.widgets[document.currentScript.dataset.widget] ?? webring.widgets.default)
.replace("PREV", "https://" + webring.sites.at(webring.idx - 1))
.replace("NEXT", "https://" + webring.sites[(webring.idx + 1) % webring.sites.length]);
}

View File

@@ -0,0 +1,108 @@
<?php
declare(strict_types=1);
// File sources, images & scripts
$TRANSING_FILES = [
"enby" => [
"left_arrow" => "../../../img/webrings/transfem_enby_left_arrow.png",
"button" => "../../../img/webrings/transfem_enby_button.png",
"right_arrow" => "../../../img/webrings/transfem_enby_right_arrow.png"
],
"trans" => [
"left_arrow" => "../../../img/webrings/transfem_trans_left_arrow.png",
"button" => "../../../img/webrings/transfem_trans_button.png",
"right_arrow" => "../../../img/webrings/transfem_trans_right_arrow.png"
],
"cloud" => [
"left_arrow" => "../../../img/webrings/transfem_cloud_left_arrow.png",
"button" => "../../../img/webrings/transfem_cloud_button.png",
"right_arrow" => "../../../img/webrings/transfem_cloud_right_arrow.png"
]
];
$TRANSING_SCRIPT_SOURCE = [
"selected_source" => 1,
"sources" =>
[["url" => "https://transring.neocities.org/ring.js",
"source" => "internet"],
["url" => "/transingtheinternet.js",
"source" => "local"]]
];
// Specific variables for script
$TRANSING_ROOT = "https://transring.neocities.org";
$TRANSING_VALID_WIDGET_TYPES = ["cloud", "enby", "trans","error"];
// Personal identifiers/choices
$TRANSING_WIDGET_TYPE = $TRANSING_VALID_WIDGET_TYPES[1];
$TRANSING_ID = 1;
// Functions
function transingSplit(string $array) {
$array = preg_replace('/\s+/', '', $array);
$i = 0;
while (strlen($array) !== 0) {
// Strip coma if found
if (str_starts_with($array,',')) {
$array = substr($array,1);
}
if (str_starts_with(strrev($array),',')) {
$array = substr($array,0,-1);
}
$temp = strpos($array,'/',1);
if (strpos($array,'/',1) > 1 or strpos($array,'/',1) == FALSE) {
$commented=FALSE;
} else {
$commented=TRUE;
}
if (str_starts_with($array,',')) {
$array = substr($array,1);
}
// Get substring position and length
$commented ? $start_pos=3 : $start_pos=1;
$end_pos = strpos($array,"\"",$start_pos);
$item_len = $end_pos - $start_pos;
if (!$commented){
$return_array[$i] = substr($array,$start_pos,$item_len);
} else {
$return_array[$i] = '';
}
// Save website into array, and strip array
if (!$commented) {
$item_len = $item_len +2; // +2 from " and "
} else {
$item_len = $item_len +4; // +4 from ", ", / and /
}
$array = substr($array,$item_len);
$i++;
}
return $return_array;
}
$transing_sites = scrapeWebsiteSites($TRANSING_SCRIPT_SOURCE,'sites :[',']');
$transing_sites = transingSplit($transing_sites);
for ($i = 0; $i < count($transing_sites); $i++){
if ($i == $TRANSING_ID) {
$transing_prev = 'https://' . $transing_sites[($i-1)];
$transing_current = 'https://' . $transing_sites[($i)];
$transing_next = 'https://' . $transing_sites[($i+1)];
$found = TRUE;
}
}
if (!isset($found)) {
echo ("ERROR ID NOT FOUND");
}

View File

@@ -0,0 +1,24 @@
<?php
declare(strict_types=1);
function TRANSINGrender(){
global $TRANSING_ROOT, $TRANSING_FILES, $TRANSING_WIDGET_TYPE, $transing_prev, $transing_next;
$TRANSING_FILES["selected"] = $TRANSING_FILES[$TRANSING_WIDGET_TYPE];
if ($TRANSING_WIDGET_TYPE === 'error') {
?>
<a href="<?php echo($TRANSING_ROOT); ?>" target="_top" style="width: 68.852%"><img src="<?php echo($TRANSING_FILES["selected"]["button"]); ?>" alt="transing the internet"></a>
<div style="font-size: 0.75em; text-align: center">(this site isn't part of the webring... yet!)</div>
<?php
} else {
?>
<div id="transring" style="display: flex; justify-content: center; align-items: center; image-rendering: pixelated; height:100%;">
<a href="<?php echo($transing_prev); ?>" target="_top" style="width: 15.574%; height:100%;"><img src="<?php echo($TRANSING_FILES["selected"]["left_arrow"]); ?>" alt="previous site"></a>
<a href="<?php echo($TRANSING_ROOT); ?>" target="_top" style="width: 68.852%; height:100%;"><img src="<?php echo($TRANSING_FILES["selected"]["button"]); ?>" alt="transing the internet"></a>
<a href="<?php echo($transing_next); ?>" target="_top" style="width: 15.574%; height:100%;"><img src="<?php echo($TRANSING_FILES["selected"]["right_arrow"]); ?>" alt="next site"></a>
</div>
<?php
}
}

View File

@@ -140,14 +140,15 @@
<div class="clip-box">
<div class="auto-scroll">
<!-- Have to replace this logic, maybe by having another way to modify behaviour of marquee -->
<?php for ($i = 0; $i <= 1; $i++) {
if ($i === 0) {
<?php for ($k = 0; $k <= 1; $k++) {
if ($k === 0) {
?><div class="scroll_one"><?php
} else if ($i === 1) {
} else if ($k === 1) {
?><div class="scroll_two"><?php
}
?>
<?php for ($j = 0; $j <= 2; $j++) {?>
<?php for ($l = 0; $l <= 2; $l++) {?>
<?php include "includes/transfemwebring.inc.php";?>
<div class="noaiwebring">
<a href="https://baccyflap.com/noai" target="_blank" alt="no ai webring" title="no ai webring"><div class="home"></div></a>
<a href="https://baccyflap.com/noai/?prv&amp;s=msv" target="_top" alt="previous" title="previous"><div class="prv"></div></a>