💾 Archived View for unbon.cafe › villapirorum › test › shareopenly captured on 2024-08-25 at 00:27:52. Gemini links have been rewritten to link to archived content

View Raw

More Information

⬅️ Previous capture (2024-05-10)

-=-=-=-=-=-=-

<!DOCTYPE html>

<html>

<head>

<title>

Share | ShareOpenly

</title>

<meta name="viewport" content="width=device-width, initial-scale=1.0">

<meta name="viewport" content="initial-scale=1.0" media="(device-height: 568px)" />

<link rel="preconnect" href="https://fonts.googleapis.com">

<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>

<link href="https://fonts.googleapis.com/css2?family=Libre+Franklin:ital,wght@0,100..900;1,100..900&display=swap" rel="stylesheet">

<link rel="stylesheet" href="https://shareopenly.org/css/main.css">

</head>

<body>

<div id="container">

<div id="main">

<form id="instance-url">

<h2>Share website to social media</h2>

<p class="explanation">

Enter your site or instance to share

<span class="url-display">

https://villapirorum.netlify.app/about </span>

to:

</p>

<p class="explanation" id="error"></p>

<p>

<label>

<input type="text" id="instance" name="url" value="" placeholder="Address of your site or instance">

</label>

</p>

<div id="button-action-holder">

<div class="button-action">

<button>Share to site</button>

</div>

</div>

</form>

<p class="explanation">

Or pick a site to share to below:

</p>

<div>

<a class="share-site" href="https://mastodon.social/share?text=Happy+to+share%21+https%3A%2F%2Fvillapirorum.netlify.app%2Fabout">

<span class="icon">

<img src="https://www.google.com/s2/favicons?domain=mastodon.social&sz=32">

</span>

<span class="domain">

mastodon.social </span>

</a>

</div>

<div>

<a class="share-site" href="https://threads.net/intent/post?text=Happy+to+share%21+https%3A%2F%2Fvillapirorum.netlify.app%2Fabout">

<span class="icon">

<img src="https://www.google.com/s2/favicons?domain=threads.net&sz=32">

</span>

<span class="domain">

threads.net </span>

</a>

</div>

<div>

<a class="share-site" href="https://mstdn.social/share?text=Happy+to+share%21+https%3A%2F%2Fvillapirorum.netlify.app%2Fabout">

<span class="icon">

<img src="https://www.google.com/s2/favicons?domain=mstdn.social&sz=32">

</span>

<span class="domain">

mstdn.social </span>

</a>

</div>

<div>

<a class="share-site" href="https://cosocial.ca/share?text=Happy+to+share%21+https%3A%2F%2Fvillapirorum.netlify.app%2Fabout">

<span class="icon">

<img src="https://www.google.com/s2/favicons?domain=cosocial.ca&sz=32">

</span>

<span class="domain">

cosocial.ca </span>

</a>

</div>

<div>

<a class="share-site" href="https://bsky.app/intent/compose?text=Happy+to+share%21%0A%0Ahttps%3A%2F%2Fvillapirorum.netlify.app%2Fabout">

<span class="icon">

<img src="https://www.google.com/s2/favicons?domain=bsky.app&sz=32">

</span>

<span class="domain">

bsky.app </span>

</a>

</div>

<div>

<a class="share-site" href="https://micro.blog/post?text=Happy+to+share%21+https%3A%2F%2Fvillapirorum.netlify.app%2Fabout">

<span class="icon">

<img src="https://www.google.com/s2/favicons?domain=micro.blog&sz=32">

</span>

<span class="domain">

micro.blog </span>

</a>

</div>

</div>

</div>

<div id="footer">

<p>

<a href="https://shareopenly.org/">ShareOpenly</a> &copy; <a href="https://werd.io">Ben Werdmuller</a>

</p>

</div>

<script>

const share_urls_json = '[]';

const share_urls = JSON.parse(share_urls_json);

// From https://github.com/miguelmota/is-valid-hostname/tree/master

function isValidHostname(value) {

if (typeof value !== 'string') return false

const validHostnameChars = /^[a-zA-Z0-9-.]{1,253}\.?$/g

if (!validHostnameChars.test(value)) {

return false

}

if (value.endsWith('.')) {

value = value.slice(0, value.length - 1)

}

if (value.length > 253) {

return false

}

const labels = value.split('.')

const isValid = labels.every(function (label) {

const validLabelChars = /^([a-zA-Z0-9-]+)$/g

const validLabel = (

validLabelChars.test(label) &&

label.length < 64 &&

!label.startsWith('-') &&

!label.endsWith('-')

)

return validLabel

})

return isValid

}

function trimAny(str, chars) { var start = 0, end = str.length; while(start < end && chars.indexOf(str[start]) >= 0) ++start; while(end > start && chars.indexOf(str[end - 1]) >= 0) --end; return (start > 0 || end < str.length) ? str.substring(start, end) : str; }

const input = document.getElementById("instance");

let action_holder = document.getElementById('button-action-holder');

let error = document.getElementById('error');

input.addEventListener('input', (e) => {

const value = trimAny(input.value, "/").replace("https://", "").replace("http://", "");

let visibility = (isValidHostname(value) && value.includes('.')) ? 'visible' : 'hidden';

action_holder.style.visibility = visibility;

error.style.display = 'none';

});

const form = document.getElementById('instance-url');

form.addEventListener('submit', (e) => {

e.preventDefault();

if (action_holder.style.visibility === 'visible') {

const value = trimAny(input.value, "/").replace("https://", "").replace("http://", "");

fetch('https://shareopenly.org/getlink/?domain='+encodeURIComponent(value)+'&url=https%3A%2F%2Fvillapirorum.netlify.app%2Fabout&text=Happy+to+share%21', {

method: 'get'

})

.then(response => response.json())

.then(data => {

if (data.return === 'success' && data.domain) {

if (!share_urls.includes(data.domain)) share_urls.unshift(data.domain);

document.cookie = `site_urls=${JSON.stringify(share_urls)}; expires=${new Date(new Date().getTime()+1000*60*60*24*365).toGMTString()}; path=/`;

window.location.href = data.share_url;

} else {

error.style.display = 'block';

error.innerText = `Unfortunately we don't know how to share to that site yet.`;

}

});

}

});

</script>

</body>

</html>