on e6ac347 help sign in
9 files changed+136−161
since splitsnapshots
unifiedsplit
404.html+2−2 README.md+5−12 index.html+55−4 links/fonts.css−15 links/main.css+9−15 media/fonts/input_mono_medium.ttf media/fonts/input_mono_regular.ttf scripts/portal.js+65−43 scripts/sites.js−70
404.html+2−2
@@ -9,8 +9,8 @@ permalink: /404.html
99</head>
1010<body style='background:black'>
1111 <script>
12− const parts = window.location.pathname.split("/")
13− const target = parts.slice(-1);
12+ var parts = window.location.pathname.split("/")
13+ var target = parts.slice(-1);
1414 parts.splice(-1)
1515 document.location.href = parts.join("/")+"/#"+target
1616 </script>
README.md+5−12
@@ -1,15 +1,15 @@
11# Webring
22
3−This [webring](https://wiki.xxiivv.com/webring) is an attempt to inspire artists & developers to create and maintain their own website and share traffic among each other. The webring's aim is to share hand-crafted websites such as **diaries, wikis & portfolios**, single pagers with nothing but outgoing links to social platforms will be rejected. To add yourself to the ring, submit an [edit](https://github.com/XXIIVV/webring/edit/master/scripts/sites.js) to this repository.
3+This [webring](http://wiki.xxiivv.com/webring) is an attempt to inspire artists & developers to create and maintain their own website and share traffic among each other. The webring's aim is to share personal websites such as *diaries, wikis & portfolios*. To add yourself to the ring, submit an [edit](https://github.com/XXIIVV/webring/edit/master/index.html) to this repository.
44
55## Join the webring
66
77```
8−<a href='https://webring.xxiivv.com/#random' target='_blank'><img src='https://webring.xxiivv.com/icon.black.svg'/></a>
8+<a href='http://webring.xxiivv.com/#random' target='_blank'><img src='http://webring.xxiivv.com/icon.black.svg'/></a>
99```
1010
1111- Add the webring icon to your website html.
12−- Add your website url to the [sites.js](https://github.com/XXIIVV/webring/edit/master/scripts/sites.js) file.
12+- Add your website url to the [index.html](https://github.com/XXIIVV/webring/edit/master/index.html)
1313- Submit a Pull Request with the location of the webring icon on your site.
1414
1515Alternatively, if you your website has a dark background, use `icon.white.svg`. If your website is complaning about *https*, go ahead and host the icon yourself.
@@ -19,16 +19,9 @@ Alternatively, if you your website has a dark background, use `icon.white.svg`.
1919Instead of linking to the directory, you can also link to the next link in the ring by adding parts of your site or domain in the hash of the request url:
2020
2121```
22−<a href='https://webring.xxiivv.com/#wiki.xxiivv' target='_blank'><img src='https://webring.xxiivv.com/icon.black.svg'/></a>
22+<a href='http://webring.xxiivv.com/#wiki.xxiivv' target='_blank'><img src='http://webring.xxiivv.com/icon.black.svg'/></a>
2323```
2424
25−## API
26−
27−This repository does not contain mature API capabilities, but there is one way to request list of sites currently in the webring.
28−
29−- Request [sites.js on xxiivv](https://webring.xxiivv.com/scripts/sites.js) or [sites.js on github](https://raw.githubusercontent.com/XXIIVV/webring/master/scripts/sites.js)
30−- Parse it as text from `[` to `]`, split by `,` and then trim all whitespace and `"` in resulting array.
31−
3225## Need Help?
3326
34−The ring is managed by [@neauoire](https://twitter.com/neauoire), but any member of the network is also welcome to join this repository as a collaborator to help manage new links and Pull Requests. Read more [here](https://wiki.xxiivv.com/webring).
27+The ring master is [@neauoire](http://twitter.com/neauoire), but any member of the network is also welcome to join this repository as a collaborator to help manage new links and Pull Requests. Read more [here](http://wiki.xxiivv.com/webring).
index.html+55−4
@@ -3,16 +3,67 @@
33<head>
44 <meta charset="utf-8">
55 <meta name="viewport" content="width=device-width, initial-scale=1.0">
6− <link rel="stylesheet" type="text/css" href="links/fonts.css"/>
76 <link rel="stylesheet" type="text/css" href="links/main.css"/>
87 <script src="scripts/portal.js"></script>
9− <script src="scripts/sites.js"></script>
108 <title>Webring</title>
119</head>
1210<body>
1311 <script>
14− const portal = new Portal(sites);
15− portal.install(document.body);
12+ // protocole://url.domain.ext
13+ var sites = [
14+ "https://wiki.xxiivv.com"
15+ , "http://estevancarlos.com"
16+ , "https://electro.pizza"
17+ , "http://xla.wiki"
18+ , "https://monochromatic.co"
19+ , "https://joshavanier.github.io"
20+ , "http://kaemura.com"
21+ , "https://liamcooke.com"
22+ , "https://electricgecko.de"
23+ , "https://wichniow.ski"
24+ , "https://hraew.autophagy.io"
25+ , "https://evenunto.net"
26+ , "https://anxl.faith"
27+ , "https://xvw.github.io"
28+ , "https://heracl.es"
29+ , "https://felipecortez.net"
30+ , "http://rukial.tk"
31+ , "http://luminghao.com"
32+ , "http://silane.io"
33+ , "https://theiceshelf.com"
34+ , "https://turelio.github.io"
35+ , "https://spaceshipsin.space"
36+ , "http://log.lectronice.com"
37+ , "https://craze.co.uk"
38+ , "https://shaneckel.com"
39+ , "https://cblgh.org"
40+ , "https://ellugar.co"
41+ , "http://hur.bet"
42+ , "http://chigby.org"
43+ , "https://1010.voyage"
44+ , "https://longest.voyage"
45+ , "https://palomakop.tv"
46+ , "https://travisshears.com"
47+ , "https://v-os.ca"
48+ , "http://secretinternet.club"
49+ , "https://jmandel.xyz"
50+ , "https://systems.ws"
51+ , "https://jamesin.space"
52+ , "https://nathanwentworth.co"
53+ , "https://eswat.ca"
54+ , "https://uonai.space"
55+ , "http://controls.ee"
56+ , "https://wasin.io"
57+ , "https://inns.studio"
58+ , "http://kokorobot.ca"
59+ , "https://ameyama.com"
60+ , "https://wake.st"
61+ , "https://xarene.la"
62+ , "http://bildwissenschaft.vortok.info"
63+ , "https://jakofranko.github.com"
64+ // Don't forget the comma!
65+ ]
66+ var portal = new Portal(sites);
1667 portal.start();
1768 </script>
1869</body>
links/fonts.cssdeleted−15
@@ -1,15 +0,0 @@
1−/* Input Mono */
2−
3−@font-face {
4− font-family: 'input_mono_regular';
5− src: url('../media/fonts/input_mono_regular.ttf') format('truetype');
6− font-weight: normal;
7− font-style: normal;
8−}
9−
10−@font-face {
11− font-family: 'input_mono_medium';
12− src: url('../media/fonts/input_mono_medium.ttf') format('truetype');
13− font-weight: normal;
14− font-style: normal;
15−}
links/main.css+9−15
@@ -1,19 +1,13 @@
1−* { margin:0;padding:0;border:0;outline:0;text-decoration:none;font-weight:inherit;font-style:inherit;color:inherit;font-size:100%;font-family:inherit;vertical-align:baseline;list-style:none;border-collapse:collapse;border-spacing:0; -webkit-font-smoothing: antialiased;-moz-osx-font-smoothing: grayscale;}
2−
31body { background:#f4f4f4; padding:0px; margin:0px; }
4−body div { display:block; background: #ddd;min-height: calc(100vh - 60px);width: calc(100vw - 60px);margin: 15px;color: #555;padding: 15px;font-family:'input_mono_regular', 'Monospaced','Courier New',courier;font-size:11px; position: relative; border-radius: 2px }
2+body div { display:block; background: #ccc;min-height: calc(100vh - 60px);width: calc(100vw - 60px);margin: 15px;color: #555;padding: 15px;font-family: 'Monospaced','Courier New',courier;font-size:12px; position: relative; border-radius: 2px }
53body div #icon { display: block;width: 30px;height: 30px;background-image: url(../icon.white.svg);background-size: cover;background-repeat: no-repeat;position: absolute;bottom: 10px;right:10px;background-position: center;padding:0px }
6−body div p { display:block; padding:0px 5px; line-height: 20px}
7−body div p a { color:black; text-decoration: none; text-decoration: underline;}
4+body div p { display:block; padding:0px 5px}
5+body div p a { color:black; text-decoration: none; }
86body div p a:hover { text-decoration: underline; }
9−body div p b { font-weight: normal; color:#000; font-family: 'input_mono_medium' }
7+body div p b { font-weight: normal; color:#000; text-decoration: underline; }
108body div p.readme { max-width:500px; }
11−body div ul { display:block; max-width: 800px; columns:3; border-bottom: 2px solid white;padding-bottom: 15px;margin-bottom:15px; overflow: hidden;}
12−body div ul li { width: 22em; display:block; padding-left:5px; overflow: hidden; text-overflow: ellipsis; }
13−body div ul li a { line-height: 20px; display: inline-block; color:#000; padding:0px 5px; text-decoration: none;}
14−body div ul li a:visited { color:#999; text-decoration: none;}
15−body div ul li a:hover { background:#ccc; color:#000; text-decoration: none; border-radius: 2px }
16−
17−@media (max-width: 950px){
18− body div ul { columns: 2 }
19−}
9+body div list { display:block; max-width: 800px; columns:3; border-bottom: 2px solid white;padding-bottom: 15px;margin-bottom:15px; overflow: hidden;}
10+body div list ln { width: 16em; display:block; padding-left:5px; overflow: hidden; text-overflow: ellipsis; }
11+body div list ln a { line-height: 20px; display: inline-block; color:#000; padding:0px 5px;}
12+body div list ln a:visited { color:#777; text-decoration: none;}
13+body div list ln a:hover { background:black; color:#fff; text-decoration: none; }
media/fonts/input_mono_medium.ttfdeleted

Binary file not shown.

media/fonts/input_mono_regular.ttfdeleted

Binary file not shown.

scripts/portal.js+65−43
@@ -1,63 +1,85 @@
1−'use strict'
2−
3−function Portal (sites) {
4− this.el = document.createElement('div')
5− this.sites = sites
6−
7− // Templates
8−
9− function _readme () {
10− return `<p class='readme'>This webring is an attempt to inspire artists & developers to build their own website and share traffic among each other. The ring welcomes personalized websites such as <b>diaries, wikis & portfolios</b>.</p><p>To add yourself to the ring, submit a <a href='https://github.com/XXIIVV/webring/edit/master/scripts/sites.js' target='_blank'>Pull Request</a>.<br />If you found a broken link, please <a href='https://github.com/XXIIVV/webring/issues/new' target='_blank'>report it</a>.</p>`
1+function Portal(sites)
2+{
3+ this.el = document.createElement("div");
4+ this.sites = sites;
5+
6+ this.install = function()
7+ {
8+ document.body.appendChild(this.el);
119 }
12−
13− function _buttons () {
14− return `<p class='buttons'><a href='#random' onClick="portal.reload('random')">Random</a> | <a href='https://github.com/XXIIVV/webring'>Information</a> <a id='icon' href='#random' onClick="portal.reload('random')"></a></p>`
10+
11+ this.start = function()
12+ {
13+ this.install();
14+ this.el.innerHTML = window.location.hash && window.location.hash.length > 4 ? this.redirect() : this.directory();
1515 }
1616
17− function _directory (sites) {
18− return `
19− <ul>${sites.reduce((acc, val, id) => { return `${acc}<li>${id}) <a href='${val}'>${val.split('//')[1]}</a></li>` }, '')}</ul>\n${_readme()}${_buttons()}`
17+ this.readme = function()
18+ {
19+ return `<p class='readme'>This webring is an attempt to inspire artists & developers to build their own website and share traffic among each other. The ring welcomes personalized websites such as <b>diaries, wikis & portfolios</b> — To add yourself to the ring, submit a <a href='https://github.com/XXIIVV/webring/edit/master/index.html' target='_blank'>Pull Request</a>.</p>`
2020 }
2121
22− function _redirect (target) {
23− return `<p>Redirecting to <b>${target}</b></p><meta http-equiv="refresh" content="3; url=${target}">
24− <p class='buttons'><a href='#' onClick="portal.reload('')">Directory</a> | <a href='#${target}' onClick="portal.reload('random')">Skip</a> | <a href='#random' onClick="portal.reload('random')">Random</a> | <a href='https://github.com/XXIIVV/webring'>Information</a> <a id='icon' href='#random' onClick="portal.reload('random')"></a></p>`
22+ this.buttons = function()
23+ {
24+ return `<p class='buttons'><a href='#random' onClick="portal.reload('random')">Random</a> | <a href='https://github.com/XXIIVV/webring'>Information</a> <a id='icon' href='#random' onClick="portal.reload('random')"></a></p>`
2525 }
26−
27− //
28−
29− this.install = function (host) {
30− host.appendChild(this.el)
26+
27+ this.directory = function()
28+ {
29+ var html = ""
30+
31+ for(var id in this.sites){
32+ var site = this.sites[id]
33+ html += `<ln>${id}) <a href='${site}'>${site.split("//")[1]}</a></ln>`
34+ }
35+ return `<list>${html}</list>\n${this.readme()}${this.buttons()}`
3136 }
3237
33− this.start = function () {
34− this.el.innerHTML = window.location.hash && window.location.hash.length > 4 ? _redirect(this.next()) : _directory(this.sites)
38+ this.reload = function()
39+ {
40+ setTimeout(()=>{ window.location.reload() },500)
3541 }
3642
37− this.reload = function () {
38− setTimeout(() => { window.location.reload() }, 500)
43+ this.navigate = function(target)
44+ {
45+ setTimeout(() => {
46+ window.location.href = target
47+ },3000)
3948 }
40−
41− this.navigate = function (target) {
42− setTimeout(() => { window.location.href = target }, 3000)
49+
50+ this.location = function()
51+ {
52+ return window.location.hash.replace("#","").trim();
4353 }
44−
45− this.locate = function () {
46− const hash = window.location.hash.replace('#', '').trim()
47−
48− if (hash == 'random') {
49− return Math.floor(Math.random() * this.sites.length)
54+
55+ this.locate = function()
56+ {
57+ var hash = this.location();
58+
59+ if(hash == "random"){
60+ return Math.floor(Math.random()*this.sites.length)
5061 }
51−
52− for (const id in this.sites) {
53− if (this.sites[id].indexOf(hash) > -1) {
62+
63+ for(var id in this.sites){
64+ var site = this.sites[id];
65+ if(site.indexOf(hash) >-1){
5466 return parseInt(id)
5567 }
5668 }
5769 return -1
5870 }
59−
60− this.next = function (loc = this.locate()) {
61− return loc == this.sites.length - 1 ? this.sites[0] : this.sites[loc + 1]
71+
72+ this.next = function(loc)
73+ {
74+ return loc == this.sites.length-1 ? this.sites[0] : this.sites[loc+1];
75+ }
76+
77+ this.redirect = function()
78+ {
79+ var location = this.locate();
80+ var target = this.next(location);
81+ this.navigate(target)
82+ return `<p>Redirecting to <b>${target}</b></p><meta http-equiv="refresh" content="3; url=${target}">
83+ <p class='buttons'><a href='#' onClick="portal.reload('')">Directory</a> | <a href='#${target}' onClick="portal.reload('random')">Skip</a> | <a href='#random' onClick="portal.reload('random')">Random</a> | <a href='https://github.com/XXIIVV/webring'>Information</a> <a id='icon' href='#random' onClick="portal.reload('random')"></a></p>`
6284 }
6385}
scripts/sites.jsdeleted−70
@@ -1,70 +0,0 @@
1−'use strict';
2−
3−// Don't forget the comma! No trailing slashes
4−// protocole://url.domain.ext
5−
6−const sites = [
7− "https://wiki.xxiivv.com"
8− , "http://estevancarlos.com"
9− , "https://electro.pizza"
10− , "https://monochromatic.co"
11− , "https://joshavanier.github.io"
12− , "http://kaemura.com"
13− , "https://liamcooke.com"
14− , "https://electricgecko.de"
15− , "https://wichniow.ski"
16− , "https://hraew.autophagy.io"
17− , "https://evenunto.net"
18− , "https://anxl.faith"
19− , "https://xvw.github.io"
20− , "https://heracl.es"
21− , "https://felipecortez.net"
22− , "http://luminghao.com"
23− , "https://theiceshelf.com"
24− , "https://turelio.github.io"
25− , "https://spaceshipsin.space"
26− , "http://log.lectronice.com"
27− , "https://craze.co.uk"
28− , "https://shaneckel.com"
29− , "https://cblgh.org"
30− , "https://ellugar.co"
31− , "http://hur.bet"
32− , "http://chigby.org"
33− , "https://longest.voyage"
34− , "https://palomakop.tv"
35− , "https://travisshears.com"
36− , "https://v-os.ca"
37− , "http://secretinternet.club"
38− , "https://jmandel.xyz"
39− , "https://systems.ws"
40− , "https://jamesin.space"
41− , "https://nathanwentworth.co"
42− , "https://eswat.ca"
43− , "https://uonai.space"
44− , "http://controls.ee"
45− , "https://wasin.io"
46− , "https://inns.studio"
47− , "http://kokorobot.ca"
48− , "https://ameyama.com"
49− , "https://wake.st"
50− , "https://xarene.la"
51− , "https://alex.zyzhang.me"
52− , "http://bildwissenschaft.vortok.info"
53− , "https://jakofranko.github.com"
54− , "https://aeriform.io"
55− , "http://blog.lucasdidthis.com"
56− , "http://npisanti.com"
57− , "https://underscorediscovery.ca"
58− , "https://drisc.io"
59− , "https://neufv.website"
60− , "https://simbolo.xyz"
61− , "https://ricky.codes"
62− , "https://maxdeviant.com"
63− , "https://tynandebold.com"
64− , "http://gytis.co"
65− , "https://nomand.co"
66− , "http://memoriata.com"
67− , "https://mmm.s-ol.nu"
68− , "https://chad.is"
69− , "https://smidgeo.com/bots"
70−];