forked from lavender-legacy/lavender.software
Resolve webring merge conflicts after changes to main
This commit is contained in:
commit
5e29b82c8d
16 changed files with 589 additions and 569 deletions
|
@ -3,7 +3,7 @@ root = true
|
||||||
[*]
|
[*]
|
||||||
indent_style = space
|
indent_style = space
|
||||||
indent_size = 2
|
indent_size = 2
|
||||||
end_of_line = crlf
|
end_of_line = lf
|
||||||
charset = utf-8
|
charset = utf-8
|
||||||
trim_trailing_whitespace = false
|
trim_trailing_whitespace = false
|
||||||
insert_final_newline = true
|
insert_final_newline = true
|
||||||
|
|
15
README.md
15
README.md
|
@ -2,8 +2,23 @@
|
||||||
|
|
||||||
Static site generated using [siru](https://github.com/videogame-hacker/siru) and hosted at [lavender.software](https://lavender.software/).
|
Static site generated using [siru](https://github.com/videogame-hacker/siru) and hosted at [lavender.software](https://lavender.software/).
|
||||||
|
|
||||||
|
## Setting Up
|
||||||
|
|
||||||
|
```shell
|
||||||
|
$ git clone 'git@lavender.software:lavender/lavender.software.git'
|
||||||
|
$ cd lavender.software/
|
||||||
|
lavender.software/ $ mkdir dist # or follow instructions in 'Deploying'
|
||||||
|
lavender.software/ $ cargo run
|
||||||
|
...
|
||||||
|
lavender.software/ $ # Built files are in dist/
|
||||||
|
```
|
||||||
|
|
||||||
|
You may want to `cd dist && python -m http.server` to get a local HTTP server.
|
||||||
|
|
||||||
## Deploying
|
## Deploying
|
||||||
|
|
||||||
|
**Note:** You don't need to do this unless you're th eone deploying the site to the production environment.
|
||||||
|
|
||||||
```shell
|
```shell
|
||||||
$ # To set up, ensure that the 'dist' folder reflects the VPS
|
$ # To set up, ensure that the 'dist' folder reflects the VPS
|
||||||
$ git clone 'root@lavender.software:/srv/http/lavender.software' dist
|
$ git clone 'root@lavender.software:/srv/http/lavender.software' dist
|
||||||
|
|
162
src/webring/webring-0.1.0.js
Normal file
162
src/webring/webring-0.1.0.js
Normal file
|
@ -0,0 +1,162 @@
|
||||||
|
(function () {
|
||||||
|
function getUID() {
|
||||||
|
var array = new Uint8Array(8);
|
||||||
|
window.crypto.getRandomValues(array);
|
||||||
|
return Array.from(array)
|
||||||
|
.map((b) => b.toString(16).padStart(2, "0"))
|
||||||
|
.join("");
|
||||||
|
}
|
||||||
|
|
||||||
|
const params = document.currentScript.dataset;
|
||||||
|
const UID = getUID();
|
||||||
|
|
||||||
|
const css = `
|
||||||
|
#--lavender-cssreset-${UID} {
|
||||||
|
all: unset;
|
||||||
|
}
|
||||||
|
|
||||||
|
#--lavender-webring-container-${UID} {
|
||||||
|
background-color: rgb(28, 23, 36);
|
||||||
|
background-blend-mode: multiply;
|
||||||
|
position: relative;
|
||||||
|
|
||||||
|
background-color: ${params.backgroundColor || "purple"};
|
||||||
|
color: ${params.textColor || "white"};
|
||||||
|
text-shadow: 0px 1px 1px ${params.textShadowColor || "black"};
|
||||||
|
padding: 1px;
|
||||||
|
font-size: 16px;
|
||||||
|
font-family: sans-serif;
|
||||||
|
|
||||||
|
margin: 10px 0px;
|
||||||
|
}
|
||||||
|
|
||||||
|
#--lavender-webring-container-${UID} a {
|
||||||
|
color: inherit !important;
|
||||||
|
}
|
||||||
|
|
||||||
|
#--lavender-webring-container-${UID}::before {
|
||||||
|
display: block;
|
||||||
|
content: ' ';
|
||||||
|
top: 0; left: 0; bottom: 0; right: 0;
|
||||||
|
position: absolute;
|
||||||
|
box-sizing: border-box;
|
||||||
|
pointer-events: none;
|
||||||
|
border: 5px outset;
|
||||||
|
opacity: 0.25;
|
||||||
|
border-color: white black black white;
|
||||||
|
}
|
||||||
|
|
||||||
|
#--lavender-webring-container-${UID} #--lavender-webring-title-${UID} {
|
||||||
|
margin: 10px 10px 0px;
|
||||||
|
text-align: center;
|
||||||
|
font-style: italic;
|
||||||
|
}
|
||||||
|
|
||||||
|
#--lavender-webring-container-${UID} #--lavender-webring-item-container-${UID} {
|
||||||
|
display: flex;
|
||||||
|
justify-content: space-around;
|
||||||
|
}
|
||||||
|
|
||||||
|
@media (max-width: 600px) {
|
||||||
|
#--lavender-webring-container-${UID} #--lavender-webring-item-container-${UID} {
|
||||||
|
flex-direction: column;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
#--lavender-webring-container-${UID} .--lavender-webring-items-${UID} {
|
||||||
|
font-size: 14px;
|
||||||
|
display: block;
|
||||||
|
text-align: center;
|
||||||
|
padding: 0px;
|
||||||
|
margin: 10px 10px 8px;
|
||||||
|
flex: 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
#--lavender-webring-container-${UID} #--lavender-webring-item-1-${UID}::before {
|
||||||
|
display: inline;
|
||||||
|
content: '\\2190\\00a0';
|
||||||
|
}
|
||||||
|
#--lavender-webring-container-${UID} #--lavender-webring-item-3-${UID}::after {
|
||||||
|
display: inline;
|
||||||
|
content: '\\00a0\\2192';
|
||||||
|
}
|
||||||
|
`;
|
||||||
|
|
||||||
|
const webring_content = `
|
||||||
|
<div id="--lavender-cssreset-${UID}">
|
||||||
|
<div id="--lavender-webring-container-${UID}">
|
||||||
|
<p id="--lavender-webring-title-${UID}">This website is a part of the Lavender Software webring</p>
|
||||||
|
<div id="--lavender-webring-item-container-${UID}">
|
||||||
|
<a class="--lavender-webring-items-${UID}" id="--lavender-webring-item-1-${UID}"></a>
|
||||||
|
<a class="--lavender-webring-items-${UID}" id="--lavender-webring-item-2-${UID}"></a>
|
||||||
|
<a class="--lavender-webring-items-${UID}" id="--lavender-webring-item-3-${UID}"></a>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
`;
|
||||||
|
|
||||||
|
function renderIdx(data, element, idx) {
|
||||||
|
idx = (idx + data.length) % data.length;
|
||||||
|
|
||||||
|
datum = data[idx];
|
||||||
|
element.textContent = datum.name;
|
||||||
|
element.href = datum.url;
|
||||||
|
}
|
||||||
|
|
||||||
|
function getElementByPostfixedId(path) {
|
||||||
|
return document.getElementById(path + "-" + UID);
|
||||||
|
}
|
||||||
|
|
||||||
|
function renderContent(currentScript, data) {
|
||||||
|
const params = currentScript.dataset;
|
||||||
|
|
||||||
|
var headstyle = document.createElement("style");
|
||||||
|
headstyle.innerHTML = css;
|
||||||
|
document.head.appendChild(headstyle);
|
||||||
|
|
||||||
|
currentScript.insertAdjacentHTML("afterend", webring_content);
|
||||||
|
|
||||||
|
const container = getElementByPostfixedId("--lavender-webring-container");
|
||||||
|
|
||||||
|
const item1 = getElementByPostfixedId("--lavender-webring-item-1");
|
||||||
|
const item2 = getElementByPostfixedId("--lavender-webring-item-2");
|
||||||
|
const item3 = getElementByPostfixedId("--lavender-webring-item-3");
|
||||||
|
|
||||||
|
const id = params.siteId;
|
||||||
|
var idindex = -1;
|
||||||
|
|
||||||
|
for (var i = 0; i < data.length; i++) {
|
||||||
|
if (data[i].id == id) {
|
||||||
|
idindex = i;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (idindex == -1) {
|
||||||
|
item2.textContent =
|
||||||
|
"this site was not found in the list. please check that you don't have any typos in the id!";
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
if ("hideTitle" in params) {
|
||||||
|
getElementByPostfixedId("--lavender-webring-title").style.display =
|
||||||
|
"none";
|
||||||
|
}
|
||||||
|
|
||||||
|
renderIdx(data, item1, idindex - 1);
|
||||||
|
renderIdx(data, item2, idindex);
|
||||||
|
renderIdx(data, item3, idindex + 1);
|
||||||
|
}
|
||||||
|
|
||||||
|
const currentScript = document.currentScript;
|
||||||
|
if (currentScript) {
|
||||||
|
fetch("https://lavender.software/webring/data.json")
|
||||||
|
.then(function (response) {
|
||||||
|
return response.json();
|
||||||
|
})
|
||||||
|
.then(function (data) {
|
||||||
|
renderContent(currentScript, data);
|
||||||
|
});
|
||||||
|
} else {
|
||||||
|
console.log("cannot locate document.currentScript element. aborting...");
|
||||||
|
}
|
||||||
|
})();
|
|
@ -1,157 +0,0 @@
|
||||||
(function() {
|
|
||||||
function getUID() {
|
|
||||||
var array = new Uint8Array(8);
|
|
||||||
window.crypto.getRandomValues(array);
|
|
||||||
return Array.from(array).map(b => b.toString(16).padStart(2, "0")).join("");
|
|
||||||
}
|
|
||||||
|
|
||||||
const params = document.currentScript.dataset;
|
|
||||||
const UID = getUID();
|
|
||||||
|
|
||||||
const css = `
|
|
||||||
#--lavender-cssreset-${UID} {
|
|
||||||
all: unset;
|
|
||||||
}
|
|
||||||
|
|
||||||
#--lavender-webring-container-${UID} {
|
|
||||||
background-color: rgb(28, 23, 36);
|
|
||||||
background-blend-mode: multiply;
|
|
||||||
position: relative;
|
|
||||||
|
|
||||||
background-color: ${params.backgroundColor || "purple"};
|
|
||||||
color: ${params.textColor || "white"};
|
|
||||||
text-shadow: 0px 1px 1px ${params.textShadowColor || "black"};
|
|
||||||
padding: 1px;
|
|
||||||
font-size: 16px;
|
|
||||||
font-family: sans-serif;
|
|
||||||
|
|
||||||
margin: 10px 0px;
|
|
||||||
}
|
|
||||||
|
|
||||||
#--lavender-webring-container-${UID} a {
|
|
||||||
color: inherit !important;
|
|
||||||
}
|
|
||||||
|
|
||||||
#--lavender-webring-container-${UID}::before {
|
|
||||||
display: block;
|
|
||||||
content: ' ';
|
|
||||||
top: 0; left: 0; bottom: 0; right: 0;
|
|
||||||
position: absolute;
|
|
||||||
box-sizing: border-box;
|
|
||||||
pointer-events: none;
|
|
||||||
border: 5px outset;
|
|
||||||
opacity: 0.25;
|
|
||||||
border-color: white black black white;
|
|
||||||
}
|
|
||||||
|
|
||||||
#--lavender-webring-container-${UID} #--lavender-webring-title-${UID} {
|
|
||||||
margin: 10px 10px 0px;
|
|
||||||
text-align: center;
|
|
||||||
font-style: italic;
|
|
||||||
}
|
|
||||||
|
|
||||||
#--lavender-webring-container-${UID} #--lavender-webring-item-container-${UID} {
|
|
||||||
display: flex;
|
|
||||||
justify-content: space-around;
|
|
||||||
}
|
|
||||||
|
|
||||||
@media (max-width: 600px) {
|
|
||||||
#--lavender-webring-container-${UID} #--lavender-webring-item-container-${UID} {
|
|
||||||
flex-direction: column;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
#--lavender-webring-container-${UID} .--lavender-webring-items-${UID} {
|
|
||||||
font-size: 14px;
|
|
||||||
display: block;
|
|
||||||
text-align: center;
|
|
||||||
padding: 0px;
|
|
||||||
margin: 10px 10px 8px;
|
|
||||||
flex: 1;
|
|
||||||
}
|
|
||||||
|
|
||||||
#--lavender-webring-container-${UID} #--lavender-webring-item-1-${UID}::before {
|
|
||||||
display: inline;
|
|
||||||
content: '\\2190\\00a0';
|
|
||||||
}
|
|
||||||
#--lavender-webring-container-${UID} #--lavender-webring-item-3-${UID}::after {
|
|
||||||
display: inline;
|
|
||||||
content: '\\00a0\\2192';
|
|
||||||
}
|
|
||||||
`;
|
|
||||||
|
|
||||||
const webring_content = `
|
|
||||||
<div id="--lavender-cssreset-${UID}">
|
|
||||||
<div id="--lavender-webring-container-${UID}">
|
|
||||||
<p id="--lavender-webring-title-${UID}">This website is a part of the Lavender Software webring</p>
|
|
||||||
<div id="--lavender-webring-item-container-${UID}">
|
|
||||||
<a class="--lavender-webring-items-${UID}" id="--lavender-webring-item-1-${UID}"></a>
|
|
||||||
<a class="--lavender-webring-items-${UID}" id="--lavender-webring-item-2-${UID}"></a>
|
|
||||||
<a class="--lavender-webring-items-${UID}" id="--lavender-webring-item-3-${UID}"></a>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
`;
|
|
||||||
|
|
||||||
function renderIdx(data, element, idx) {
|
|
||||||
idx = (idx + data.length) % data.length;
|
|
||||||
|
|
||||||
datum = data[idx];
|
|
||||||
element.textContent = datum.name;
|
|
||||||
element.href = datum.url;
|
|
||||||
}
|
|
||||||
|
|
||||||
function getElementByPostfixedId(path) {
|
|
||||||
return document.getElementById(path + "-" + UID);
|
|
||||||
}
|
|
||||||
|
|
||||||
function renderContent(currentScript, data) {
|
|
||||||
const params = currentScript.dataset;
|
|
||||||
|
|
||||||
var headstyle = document.createElement('style');
|
|
||||||
headstyle.innerHTML = css;
|
|
||||||
document.head.appendChild(headstyle);
|
|
||||||
|
|
||||||
currentScript.insertAdjacentHTML("afterend", webring_content);
|
|
||||||
|
|
||||||
const container = getElementByPostfixedId('--lavender-webring-container');
|
|
||||||
|
|
||||||
const item1 = getElementByPostfixedId('--lavender-webring-item-1');
|
|
||||||
const item2 = getElementByPostfixedId('--lavender-webring-item-2');
|
|
||||||
const item3 = getElementByPostfixedId('--lavender-webring-item-3');
|
|
||||||
|
|
||||||
const id = params.siteId;
|
|
||||||
var idindex = -1;
|
|
||||||
|
|
||||||
for (var i = 0; i < data.length; i++) {
|
|
||||||
if (data[i].id == id) {
|
|
||||||
idindex = i;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
if (idindex == -1) {
|
|
||||||
item2.textContent = "this site was not found in the list. please check that you don't have any typos in the id!";
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
if ("hideTitle" in params) {
|
|
||||||
getElementByPostfixedId('--lavender-webring-title').style.display = 'none';
|
|
||||||
}
|
|
||||||
|
|
||||||
renderIdx(data, item1, idindex - 1);
|
|
||||||
renderIdx(data, item2, idindex);
|
|
||||||
renderIdx(data, item3, idindex + 1);
|
|
||||||
}
|
|
||||||
|
|
||||||
const currentScript = document.currentScript;
|
|
||||||
if (currentScript) {
|
|
||||||
fetch("https://lavender.software/webring/data.json").then(function(response) {
|
|
||||||
return response.json();
|
|
||||||
}).then(function(data) {
|
|
||||||
renderContent(currentScript, data);
|
|
||||||
});
|
|
||||||
} else {
|
|
||||||
console.log("cannot locate document.currentScript element. aborting...");
|
|
||||||
}
|
|
||||||
|
|
||||||
})();
|
|
Loading…
Reference in a new issue