💾 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
⬅️ 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> © <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>