Compare commits

..

7 commits

Author SHA1 Message Date
ayakael
76360bcc2f
*: fix grammar errors
All checks were successful
/ render (push) Successful in 38s
2025-04-03 18:49:30 -04:00
78a1b6627f
join: migrate registration form to Forgejo backend
Some checks failed
/ preview (pull_request) Successful in 41s
/ render (push) Successful in 41s
/ cleanup (pull_request) Failing after 25s
2025-04-03 18:41:13 -04:00
aec1460de9
ci: move to pages server
All checks were successful
/ render (push) Successful in 37s
2025-03-31 20:28:00 -04:00
2f88882e0d
footer: update newsletter
All checks were successful
/ render (push) Successful in 37s
2025-03-23 16:09:33 -04:00
1fb1da0413
footer: update newsletter uuid
All checks were successful
/ render (push) Successful in 36s
2025-03-13 17:51:31 -04:00
f9e83086a3
footer: nullify enter key
Some checks failed
/ preview (pull_request) Successful in 40s
/ cleanup (pull_request) Failing after 32s
/ render (push) Successful in 43s
2025-03-13 17:36:29 -04:00
7ef8410cfc
footer: add hcapatcha check for subsribe
All checks were successful
/ preview (pull_request) Successful in 36s
2024-11-03 10:19:50 -05:00
36 changed files with 533 additions and 115 deletions

View file

@ -11,12 +11,11 @@ jobs:
- name: Environment setup - name: Environment setup
run: | run: |
apk add git nodejs jq coreutils curl tree gawk grep apk add git nodejs jq coreutils curl tree gawk grep
- name: Public repo pull - name: Pages repo pull
uses: actions/checkout@v4 uses: actions/checkout@v4
with: with:
fetch-depth: 0 fetch-depth: 0
token: ${{ secrets.PAGES_TOKEN }} ref: pages
ref: public
- name: Render website - name: Render website
run: | run: |
export GITHUB_PR_NAME=$(grep -l ${{ github.sha }} previews/*/git_sha.txt | awk -F '/' '{print $2}') export GITHUB_PR_NAME=$(grep -l ${{ github.sha }} previews/*/git_sha.txt | awk -F '/' '{print $2}')

View file

@ -1,27 +0,0 @@
on:
push:
branches:
- 'public'
jobs:
deploy:
runs-on: x86_64
container: alpine:latest
env:
GIT_SSH_COMMAND: ssh -o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no
steps:
- name: Environment setup
run: |
apk add git nodejs openssh-client-common openssh-client-default
- name: Start ssh-agent
uses: actions/ssh-agent@v0.9.0
with:
ssh-private-key: ${{ secrets.PAGES_PRIVKEY }}
- name: Repo pull
uses: actions/checkout@v4
with:
fetch-depth: 0
- name: Website upload
run: |
git remote set-url origin ${{ vars.PAGES_TARGET }}
git push -f

View file

@ -11,28 +11,27 @@ jobs:
steps: steps:
- name: Environment setup - name: Environment setup
run: | run: |
apk add git ikiwiki po4a perl-yaml-tiny tree nodejs apk add git ikiwiki po4a perl-yaml-tiny tree nodejs imagemagick-perlmagick imagemagick imagemagick-jpeg findutils bash imagemagick-webp
- name: Repo pull - name: Repo pull
uses: https://github.com/actions/checkout@v4 uses: actions/checkout@v4
with: with:
fetch-depth: 1 fetch-depth: 1
token: ${{ secrets.PAGES_TOKEN }} - name: Pages repo pull
- name: Public repo pull uses: actions/checkout@v4
uses: https://github.com/actions/checkout@v4
with: with:
fetch-depth: 0 fetch-depth: 0
ref: public ref: pages
path: public path: public
token: ${{ secrets.PAGES_TOKEN }}
- name: Render website - name: Render website
run: ikiwiki --setup ikiwiki.setup run: ikiwiki --setup ikiwiki.setup
- name: Website upload - name: Website upload
run: | run: |
rm -Rf public/.forgejo cp .pages-domains public/.domains
mkdir -p public/.forgejo/workflows cp .pages-redirect public/_redirects
cp .forgejo/workflows/deploy.yaml public/.forgejo/workflows/.
git log -1 --pretty=%B > commit.txt git log -1 --pretty=%B > commit.txt
cd public cd public
find -name 'index.html' -type 'l' -delete
find -name 'index.fr.html' -exec bash -c 'ln -s "${0/.*\/}" "${0/.fr/}"' {} \;
date > generated.txt date > generated.txt
# Note: the following account information will not work on GHES # Note: the following account information will not work on GHES
git config user.name "forgejo-actions[bot]" git config user.name "forgejo-actions[bot]"

View file

@ -10,20 +10,18 @@ jobs:
steps: steps:
- name: Environment setup - name: Environment setup
run: | run: |
apk add git ikiwiki po4a perl-yaml-tiny tree nodejs jq coreutils curl apk add git ikiwiki po4a perl-yaml-tiny tree nodejs jq coreutils curl imagemagick-perlmagick imagemagick imagemagick-jpeg findutils bash imagemagick-webp
echo "GITHUB_PR_NAME=$(curl -Ls ${{ github.server_url }}/api/v1/repos/${{ github.repository }}/pulls/${{ github.ref_name }} | jq .title | tr ' ' '-' | tr -d ':' | tr -d '"' | tr '[:upper:]' '[:lower:]' | tr '/' '-')" >> $GITHUB_ENV echo "GITHUB_PR_NAME=$(curl -Ls ${{ github.server_url }}/api/v1/repos/${{ github.repository }}/pulls/${{ github.ref_name }} -H 'accept: application/json' -H 'Authorization: token ${{ secrets.FORGEJO_TOKEN }}' | jq .title | tr ' ' '-' | tr -d ':' | tr -d '"' | tr '[:upper:]' '[:lower:]' | tr '/' '-' | tr -d ',')" >> $GITHUB_ENV
- name: Repo pull - name: Repo pull
uses: actions/checkout@v4 uses: actions/checkout@v4
with: with:
fetch-depth: 1 fetch-depth: 1
token: ${{ secrets.PAGES_TOKEN }}
- name: Public repo pull - name: Public repo pull
uses: actions/checkout@v4 uses: actions/checkout@v4
with: with:
fetch-depth: 0 fetch-depth: 0
ref: public ref: pages
path: public path: public
token: ${{ secrets.PAGES_TOKEN }}
- name: Render website - name: Render website
run: | run: |
rm -rf public/previews/$GITHUB_PR_NAME || true rm -rf public/previews/$GITHUB_PR_NAME || true
@ -32,11 +30,11 @@ jobs:
ikiwiki --setup ikiwiki.setup ikiwiki --setup ikiwiki.setup
cd public/previews cd public/previews
tree -d -H '.' -L 1 --noreport --charset utf-8 -T "Versions" -o index.html tree -d -H '.' -L 1 --noreport --charset utf-8 -T "Versions" -o index.html
cd $GITHUB_PR_NAME
find -name 'index.html' -type 'l' -delete
find -name 'index.fr.html' -exec bash -c 'ln -s "${0/.*\/}" "${0/.fr/}"' {} \;
- name: Website upload - name: Website upload
run: | run: |
rm -Rf public/.forgejo
mkdir -p public/.forgejo/workflows
cp .forgejo/workflows/deploy.yaml public/.forgejo/workflows/.
git log -1 --pretty=%B > commit.txt git log -1 --pretty=%B > commit.txt
cd public cd public
date > previews/$GITHUB_PR_NAME/generated.txt date > previews/$GITHUB_PR_NAME/generated.txt

1
.pages-domains Normal file
View file

@ -0,0 +1 @@
www.ilot.io

0
.pages-redirect Normal file
View file

Binary file not shown.

View file

@ -7,19 +7,19 @@
msgid "" msgid ""
msgstr "" msgstr ""
"Project-Id-Version: ilot.io\n" "Project-Id-Version: ilot.io\n"
"POT-Creation-Date: 2024-10-09 18:45-0400\n" "POT-Creation-Date: 2025-03-13 17:50-0400\n"
"PO-Revision-Date: 2024-10-09 18:46-0400\n" "PO-Revision-Date: 2025-04-03 18:43-0400\n"
"Last-Translator: \n" "Last-Translator: \n"
"Language-Team: dev@ayakael.net\n" "Language-Team: dev@ayakael.net\n"
"Language: fr\n" "Language: fr\n"
"MIME-Version: 1.0\n" "MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n" "Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n" "Content-Transfer-Encoding: 8bit\n"
"X-Generator: Poedit 3.4.3\n" "X-Generator: Poedit 3.5\n"
#. type: Content of: <p><div><div><div><h5> #. type: Content of: <p><div><div><div><h5>
msgid "Support" msgid "Support"
msgstr "Soutient" msgstr "Soutien"
#. type: Content of: <p><div><div><div><ul><li> #. type: Content of: <p><div><div><div><ul><li>
msgid "[[FAQs|https://support.ilot.io/en/hc/706927618]]" msgid "[[FAQs|https://support.ilot.io/en/hc/706927618]]"
@ -31,7 +31,7 @@ msgstr "[[Problèmes connus|https://forge.ilot.io/ilot/-/projects/3]]"
#. type: Content of: <p><div><div><div><ul><li> #. type: Content of: <p><div><div><div><ul><li>
msgid "[[Support ticket|https://support.ilot.io/help/706927618]]" msgid "[[Support ticket|https://support.ilot.io/help/706927618]]"
msgstr "[[Soutient technique|https://support.ilot.io/help/706927618]]" msgstr "[[Soutien technique|https://support.ilot.io/help/706927618]]"
#. type: Content of: <p><div><div><div><h5> #. type: Content of: <p><div><div><div><h5>
msgid "Contribute" msgid "Contribute"
@ -77,10 +77,18 @@ msgstr "Nouvelles"
msgid "Subscribe to our [[newsletter|https://notif.ilot.io/archive]]" msgid "Subscribe to our [[newsletter|https://notif.ilot.io/archive]]"
msgstr "S'abonner à notre [[liste de diffusion|https://notif.ilot.io/archive]]" msgstr "S'abonner à notre [[liste de diffusion|https://notif.ilot.io/archive]]"
#. type: Content of: <p><div><div><div><form><script>
msgid ""
"document.addEventListener('keydown', function (event) { if (event.keyCode "
"=== 13 && event.target.nodeName === 'INPUT') { var form = event.target.form; "
"var index = Array.prototype.indexOf.call(form, event.target); form."
"elements[index + 1].focus(); event.preventDefault(); } });"
msgstr ""
#. type: Content of: <p><div><div><div><form> #. type: Content of: <p><div><div><div><form>
msgid "" msgid ""
"<input type=\"hidden\" name=\"nonce\" /> <input id=\"9c490\" type=\"hidden\" " "<input type=\"hidden\" name=\"nonce\" /> <input id=\"39425\" type=\"hidden\" "
"name=\"l\" value=\"9c490957-b50b-4162-898d-92259e350cd6\" />" "name=\"l\" value=\"39425113-44b5-46f7-9897-91151467b05f\" />"
msgstr "" msgstr ""
#. type: Content of: <p><div><div><div><form><div> #. type: Content of: <p><div><div><div><form><div>
@ -93,11 +101,33 @@ msgstr ""
#. type: Content of: <p><div><div><div><form> #. type: Content of: <p><div><div><div><form>
msgid "" msgid ""
"<button aria-label=\"Subscribe\" class=\"btn\" type=\"submit\">Subscribe</" "<button aria-label=\"Subscribe\" class=\"btn\" type=\"button\" data-bs-"
"button>" "toggle=\"modal\" data-bs-target=\"#hcaptchamodal\">Subscribe</button>"
msgstr "" msgstr ""
"<button aria-label=\"Subscribe\" class=\"btn\" type=\"submit\">S'abonner</" "<button aria-label=\"Subscribe\" class=\"btn\" type=\"button\" data-bs-"
"button>" "toggle=\"modal\" data-bs-target=\"#hcaptchamodal\">S'abonner</button>"
#. type: Content of: <p><div><div><div><form><div><div><div><div><h5>
msgid "Are you a robot?"
msgstr "Êtes-vous un robot?"
#. type: Content of: <p><div><div><div><form><div><div><div><div>
msgid ""
"<button type=\"button\" class=\"btn-close\" data-bs-dismiss=\"modal\" aria-"
"label=\"Close\"></button>"
msgstr ""
"<button type=\"button\" class=\"btn-close\" data-bs-dismiss=\"modal\" aria-"
"label=\"Fermer\"></button>"
#. type: Content of: <p><div><div><div><form><div><div><div><div>
msgid ""
"<button type=\"button\" class=\"btn btn-secondary\" data-bs-"
"dismiss=\"modal\">Close</button> <button aria-label=\"Subscribe\" "
"class=\"btn\" type=\"submit\">Subscribe</button>"
msgstr ""
"<button type=\"button\" class=\"btn btn-secondary\" data-bs-"
"dismiss=\"modal\">Fermer</button> <button aria-label=\"Subscribe\" "
"class=\"btn\" type=\"submit\">S'abonner</button>"
#, fuzzy #, fuzzy
#~| msgid "[[Wiki|https://wiki.ilot.io]]" #~| msgid "[[Wiki|https://wiki.ilot.io]]"

View file

@ -35,13 +35,44 @@
<form method="post" action="https://notif.ilot.io/subscription/form" class="listmonk-form"> <form method="post" action="https://notif.ilot.io/subscription/form" class="listmonk-form">
<input type="hidden" name="nonce" /> <!-- Converts enter key to tab -->
<input id="9c490" type="hidden" name="l" value="9c490957-b50b-4162-898d-92259e350cd6" /> <script>
<div class="t"> document.addEventListener('keydown', function (event) {
<input aria-label="Email" class="btn" type="email" name="email" required placeholder="E-mail" /> if (event.keyCode === 13 && event.target.nodeName === 'INPUT') {
</div> var form = event.target.form;
<button aria-label="Subscribe" class="btn" type="submit">Subscribe</button> var index = Array.prototype.indexOf.call(form, event.target);
form.elements[index + 1].focus();
event.preventDefault();
}
});
</script>
<input type="hidden" name="nonce" />
<input id="39425" type="hidden" name="l" value="39425113-44b5-46f7-9897-91151467b05f" />
<div class="t">
<input aria-label="Email" class="btn" type="email" name="email" required placeholder="E-mail" />
</div>
<button aria-label="Subscribe" class="btn" type="button" data-bs-toggle="modal" data-bs-target="#hcaptchamodal">Subscribe</button>
<div class="modal fade" id="hcaptchamodal" tabindex="-1" aria-labelledby="haptcha" aria-hidden="true">
<div class="modal-dialog">
<div class="modal-content">
<div class="modal-header">
<h5 class="modal-title" id="hcapatchamodallabel">Are you a robot?</h5>
<button type="button" class="btn-close" data-bs-dismiss="modal" aria-label="Close"></button>
</div>
<div class="modal-body">
<div class="h-captcha" data-sitekey="be08a59e-ae24-472e-8a80-22d07016ee90" data-callback="submitSubscribe"></div>
<script src="https://js.hcaptcha.com/1/api.js" async defer></script>
</div>
<div class="modal-footer">
<button type="button" class="btn btn-secondary" data-bs-dismiss="modal">Close</button>
<button aria-label="Subscribe" class="btn" type="submit">Subscribe</button>
</div>
</div>
</div>
</div>
</form> </form>
</div> </div>
</div> </div>
</div> </div>

View file

@ -7,7 +7,7 @@
msgid "" msgid ""
msgstr "" msgstr ""
"Project-Id-Version: PACKAGE VERSION\n" "Project-Id-Version: PACKAGE VERSION\n"
"POT-Creation-Date: 2024-10-09 18:45-0400\n" "POT-Creation-Date: 2025-03-13 17:50-0400\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n" "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL@li.org>\n" "Language-Team: LANGUAGE <LL@li.org>\n"
@ -76,10 +76,18 @@ msgstr ""
msgid "Subscribe to our [[newsletter|https://notif.ilot.io/archive]]" msgid "Subscribe to our [[newsletter|https://notif.ilot.io/archive]]"
msgstr "" msgstr ""
#. type: Content of: <p><div><div><div><form><script>
msgid ""
"document.addEventListener('keydown', function (event) { if (event.keyCode "
"=== 13 && event.target.nodeName === 'INPUT') { var form = event.target.form; "
"var index = Array.prototype.indexOf.call(form, event.target); "
"form.elements[index + 1].focus(); event.preventDefault(); } });"
msgstr ""
#. type: Content of: <p><div><div><div><form> #. type: Content of: <p><div><div><div><form>
msgid "" msgid ""
"<input type=\"hidden\" name=\"nonce\" /> <input id=\"9c490\" type=\"hidden\" " "<input type=\"hidden\" name=\"nonce\" /> <input id=\"981a0\" type=\"hidden\" "
"name=\"l\" value=\"9c490957-b50b-4162-898d-92259e350cd6\" />" "name=\"l\" value=\"981a06b2-c76b-41d0-be19-f6092c4e91cd\" />"
msgstr "" msgstr ""
#. type: Content of: <p><div><div><div><form><div> #. type: Content of: <p><div><div><div><form><div>
@ -90,6 +98,24 @@ msgstr ""
#. type: Content of: <p><div><div><div><form> #. type: Content of: <p><div><div><div><form>
msgid "" msgid ""
"<button aria-label=\"Subscribe\" class=\"btn\" " "<button aria-label=\"Subscribe\" class=\"btn\" type=\"button\" "
"type=\"submit\">Subscribe</button>" "data-bs-toggle=\"modal\" "
"data-bs-target=\"#hcaptchamodal\">Subscribe</button>"
msgstr ""
#. type: Content of: <p><div><div><div><form><div><div><div><div><h5>
msgid "Are you a robot?"
msgstr ""
#. type: Content of: <p><div><div><div><form><div><div><div><div>
msgid ""
"<button type=\"button\" class=\"btn-close\" data-bs-dismiss=\"modal\" "
"aria-label=\"Close\"></button>"
msgstr ""
#. type: Content of: <p><div><div><div><form><div><div><div><div>
msgid ""
"<button type=\"button\" class=\"btn btn-secondary\" "
"data-bs-dismiss=\"modal\">Close</button> <button aria-label=\"Subscribe\" "
"class=\"btn\" type=\"submit\">Subscribe</button>"
msgstr "" msgstr ""

View file

@ -46,6 +46,7 @@ add_plugins:
- typography - typography
- sidebar2 - sidebar2
- po - po
- inline
# plugins to disable # plugins to disable
disable_plugins: disable_plugins:
- htmlscrubber - htmlscrubber
@ -411,7 +412,7 @@ po_master_language: en|English
po_slave_languages: po_slave_languages:
- fr|Français - fr|Français
# configures what pages are translatable # configures what pages are translatable
po_translatable_pages: 'index or footer or tools or sidebar or join or recentchanges or shortcuts' po_translatable_pages: 'index or footer or platforms or sidebar or join or recentchanges or shortcuts'
# used to decide how internal links should be generated, depending on web server features and site-specific preferences. # used to decide how internal links should be generated, depending on web server features and site-specific preferences.
po_link_to: current po_link_to: current

Binary file not shown.

Before

Width:  |  Height:  |  Size: 346 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 15 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 376 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 647 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 169 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 180 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 186 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 370 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 313 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.1 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 409 B

Binary file not shown.

View file

@ -6,14 +6,14 @@ msgid ""
msgstr "" msgstr ""
"Project-Id-Version: ilot.io\n" "Project-Id-Version: ilot.io\n"
"POT-Creation-Date: 2024-09-08 12:28-0400\n" "POT-Creation-Date: 2024-09-08 12:28-0400\n"
"PO-Revision-Date: 2024-09-08 12:33-0400\n" "PO-Revision-Date: 2025-04-03 18:45-0400\n"
"Last-Translator: Philippe Batailler <philippe.batailler@free.fr>\n" "Last-Translator: Philippe Batailler <philippe.batailler@free.fr>\n"
"Language-Team: dev@ayakael.net\n" "Language-Team: dev@ayakael.net\n"
"Language: fr\n" "Language: fr\n"
"MIME-Version: 1.0\n" "MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n" "Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n" "Content-Transfer-Encoding: 8bit\n"
"X-Generator: Poedit 3.4.3\n" "X-Generator: Poedit 3.5\n"
#. type: Plain text #. type: Plain text
#, no-wrap #, no-wrap
@ -46,8 +46,8 @@ msgid ""
"our data, and manage our shared technologies. Members also provide the labor " "our data, and manage our shared technologies. Members also provide the labor "
"to run ilot at all levels." "to run ilot at all levels."
msgstr "" msgstr ""
"[[ilot|https://ilot.io]] est une isle coopérative de l'internet. Nous " "[[ilot|https://ilot.io]] est une ile coopérative de l'internet. Nous "
"administrons une instance de Nextcloud, une plateformes libre de travail et " "administrons une instance de Nextcloud, une plateforme libre de travail et "
"de stockage de donnée analogue à Google Drive. Notre objectif est de nous " "de stockage de donnée analogue à Google Drive. Notre objectif est de nous "
"constituer en coopérative afin de créer une infrastructure numérique par et " "constituer en coopérative afin de créer une infrastructure numérique par et "
"pour ses utilisateur-ice-s, en alternative à l'internet cloisonné et " "pour ses utilisateur-ice-s, en alternative à l'internet cloisonné et "
@ -66,8 +66,8 @@ msgstr ""
"Le projet est actuellement en version bêta, car il reste encore beaucoup de " "Le projet est actuellement en version bêta, car il reste encore beaucoup de "
"travail à faire. Alors que l'infrastructure technique est mise en place et " "travail à faire. Alors que l'infrastructure technique est mise en place et "
"stable, la gouvernance et les lignes directrices de la communauté sont " "stable, la gouvernance et les lignes directrices de la communauté sont "
"encore en cours d'élaboration. Si vous souhaitez rejoindre ilot, visitez " "encore en cours d'élaboration. Si vous souhaitez vous joindre à notre "
"notre [[formulaire d'inscription|join]]." "projet, compléter notre [[formulaire d'inscription|join]]."
#. type: Plain text #. type: Plain text
msgid "" msgid ""

View file

@ -16,4 +16,4 @@ ilot was started in 2021 when AESA-CIRI, the sociology, anthropology and immigra
To learn more please visit some of the pages: To learn more please visit some of the pages:
[[Tools]] - The set of tools we offer to our members [[Platforms]] - The online spaces we use and manage

Binary file not shown.

View file

@ -7,19 +7,20 @@
msgid "" msgid ""
msgstr "" msgstr ""
"Project-Id-Version: ilot.io\n" "Project-Id-Version: ilot.io\n"
"POT-Creation-Date: 2024-10-08 11:35-0400\n" "POT-Creation-Date: 2025-04-03 18:26-0400\n"
"PO-Revision-Date: 2024-10-08 11:29-0400\n" "PO-Revision-Date: 2025-04-03 18:47-0400\n"
"Last-Translator: \n" "Last-Translator: \n"
"Language-Team: dev@ayakael.net\n" "Language-Team: dev@ayakael.net\n"
"Language: fr\n" "Language: fr\n"
"MIME-Version: 1.0\n" "MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n" "Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n" "Content-Transfer-Encoding: 8bit\n"
"X-Generator: Poedit 3.4.3\n" "X-Generator: Poedit 3.5\n"
#. type: Content of: outside any tag (error?) #. type: Content of: outside any tag (error?)
msgid "[[!meta title=\"Join\"]]" msgid "[[!meta title=\"Join\"]] [[!inline pages=\"join/join-en\" raw=\"yes\"]]"
msgstr "[[!meta title=\"Se joindre\"]]" msgstr ""
"[[!meta title=\"Se joindre\"]] [[!inline pages=\"join/join-fr\" raw=\"yes\"]]"
#. type: Content of: <header><h1> #. type: Content of: <header><h1>
msgid "Registration Form" msgid "Registration Form"
@ -220,6 +221,9 @@ msgstr ""
"maxlength=\"50\"></p> <input type=\"button\" value=\"Soumettre\" id = " "maxlength=\"50\"></p> <input type=\"button\" value=\"Soumettre\" id = "
"\"submit\" onClick = \"createIssue()\"> </form>" "\"submit\" onClick = \"createIssue()\"> </form>"
#~ msgid "[[!meta title=\"Join\"]]"
#~ msgstr "[[!meta title=\"Se joindre\"]]"
#~ msgid "" #~ msgid ""
#~ "async function checkDuplicate() { var url='https://lab.ilot.io/api/v4/" #~ "async function checkDuplicate() { var url='https://lab.ilot.io/api/v4/"
#~ "projects/99/issues'; var email = document.getElementById(\"email\")." #~ "projects/99/issues'; var email = document.getElementById(\"email\")."

View file

@ -1,6 +1,6 @@
[[!meta title="Join"]] [[!meta title="Join"]]
<script src="../js/join.js"></script> [[!inline pages="join/join-en" raw="yes"]]
<header class="text-center"> <header class="text-center">
<h1 class="post-title">Registration Form</h1> <h1 class="post-title">Registration Form</h1>

View file

@ -7,7 +7,7 @@
msgid "" msgid ""
msgstr "" msgstr ""
"Project-Id-Version: PACKAGE VERSION\n" "Project-Id-Version: PACKAGE VERSION\n"
"POT-Creation-Date: 2024-10-08 11:35-0400\n" "POT-Creation-Date: 2025-04-03 18:27-0400\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n" "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL@li.org>\n" "Language-Team: LANGUAGE <LL@li.org>\n"
@ -17,7 +17,7 @@ msgstr ""
"Content-Transfer-Encoding: 8bit\n" "Content-Transfer-Encoding: 8bit\n"
#. type: Content of: outside any tag (error?) #. type: Content of: outside any tag (error?)
msgid "[[!meta title=\"Join\"]]" msgid "[[!meta title=\"Join\"]] [[!inline pages=\"join/join-en\" raw=\"yes\"]]"
msgstr "" msgstr ""
#. type: Content of: <header><h1> #. type: Content of: <header><h1>

View file

@ -1,10 +1,11 @@
<script>
async function checkDuplicate() { async function checkDuplicate() {
var url='https://lab.ilot.io/api/v4/projects/99/issues'; var url='https://forge.ilot.io/api/v1/repos/ilot/registration/issues';
var email = document.getElementById("email").value; var email = document.getElementById("email").value;
const response = await fetch(url, { const response = await fetch(url, {
headers: { headers: {
'PRIVATE-TOKEN': 'glpat-RaoZSW_3XMhkGr19k6Wv', 'authorization': 'token b8d8617bb6049c0e47b7bba5cd0931799f54609c',
'Content-Type': 'application/json', 'Content-Type': 'application/json',
}, },
}) })
@ -20,28 +21,28 @@
} }
async function createIssue() { async function createIssue() {
var baseurl = 'https://lab.ilot.io/api/v4/projects/99/issues?&labels=Request'; var url = 'https://forge.ilot.io/api/v1/repos/ilot/registration/issues';
var mathspamtrap = document.getElementById("math-spam-trap").value; var mathspamtrap = document.getElementById("math-spam-trap").value;
var agreetoterms = document.getElementById("agree-to-terms").checked; var agreetoterms = document.getElementById("agree-to-terms").checked;
var email = document.getElementById("email").value; var email = document.getElementById("email").value;
if(!agreetoterms) { if(!agreetoterms) {
alert("Registration requires agreement of Code of Conduct"); alert("Registration requires agreement of Code of Conduct.");
return false; return false;
} }
if(!email) { if(!email) {
alert("Email cannot be empty"); alert("Email cannot be empty.");
return false; return false;
} }
if(mathspamtrap != "9") { if(mathspamtrap != "9") {
alert("Wrong math answer"); alert("Wrong math answer.");
return false; return false;
} }
if(await checkDuplicate(email) === true) { if(await checkDuplicate(email) === true) {
alert("This email address has already requested an account"); alert("This email address has already requested an account.");
return false; return false;
} }
@ -49,29 +50,28 @@
var name = name.replace (/^/,'Name: '); var name = name.replace (/^/,'Name: ');
var aboutme = document.getElementById("about-me").value; var aboutme = document.getElementById("about-me").value;
var aboutme = aboutme.replace (/^/,'About me: '); var aboutme = aboutme.replace (/^/,'About me: ');
var aboutme = aboutme.replace(/\r?\n/g, "%0A%0A");
var howfound = document.getElementById("how-found").value; var howfound = document.getElementById("how-found").value;
var howfound = howfound.replace (/^/,'How I found ilot: '); var howfound = howfound.replace (/^/,'How I found ilot: ');
var howfound = howfound.replace(/\r?\n/g, "%0A%0A");
var ocuser = document.getElementById("oc-user").value; var ocuser = document.getElementById("oc-user").value;
var ocuser = ocuser.replace (/^/,'OpenCollective Profile: '); var ocuser = ocuser.replace (/^/,'OpenCollective Profile: ');
var description = name + "%0A%0A" + aboutme + "%0A%0A" + howfound + "%0A%0A" + ocuser; var description = name + "\n\n" + aboutme + "\n\n" + howfound + "\n\n" + ocuser;
var url = baseurl.concat("&title=", email, "&description=", description);
console.log('Description:', description); console.log('Description:', description);
fetch(url, { fetch(url, {
method: 'POST', method: 'POST',
headers: { headers: {
'PRIVATE-TOKEN': 'glpat-RaoZSW_3XMhkGr19k6Wv', 'authorization': 'token b8d8617bb6049c0e47b7bba5cd0931799f54609c',
'Content-Type': 'application/json', 'Content-Type': 'application/json',
}, },
body: JSON.stringify({ title: email, body: description }),
}) })
.then(response => response.json()) .then(response => response.json())
.then(result => { .then(result => {
console.log('Success:', result); console.log('Success:', result);
alert("Request submitted. A working group member will process your registration shortly. If you receive no contact within seven days of registration, please send an email to support@ilot.io"); alert("Request submitted. A working group member will process your registration shortly. If you receive no contact within seven days of registration, please send an email to support@ilot.io.");
}) })
.catch(error => { .catch(error => {
console.error('Error:', error) console.error('Error:', error)
}); });
} }
</script>

77
join/join-fr.html Normal file
View file

@ -0,0 +1,77 @@
<script>
async function checkDuplicate() {
var url='https://forge.ilot.io/api/v1/repos/ilot/registration/issues';
var email = document.getElementById("email").value;
const response = await fetch(url, {
headers: {
'authorization': 'token b8d8617bb6049c0e47b7bba5cd0931799f54609c',
'Content-Type': 'application/json',
},
})
const result = await response.json();
let index = result
.findIndex(item => item.title === email);
if (index !== -1) {
return true;
} else {
return false;
}
}
async function createIssue() {
var url = 'https://forge.ilot.io/api/v1/repos/ilot/registration/issues';
var mathspamtrap = document.getElementById("math-spam-trap").value;
var agreetoterms = document.getElementById("agree-to-terms").checked;
var email = document.getElementById("email").value;
if(!agreetoterms) {
alert("Vous devez être en accord avec notre code de conduite.");
return false;
}
if(!email) {
alert("Le courriel ne peut pas être vide.");
return false;
}
if(mathspamtrap != "9") {
alert("Ceci n'est pas la bonne réponse à l'exercise mathématique.");
return false;
}
if(await checkDuplicate(email) === true) {
alert("Ce courriel a déjà fait l'objet d'une demande de compte.");
return false;
}
var name = document.getElementById("name").value;
var name = name.replace (/^/,'Name: ');
var aboutme = document.getElementById("about-me").value;
var aboutme = aboutme.replace (/^/,'About me: ');
var howfound = document.getElementById("how-found").value;
var howfound = howfound.replace (/^/,'How I found ilot: ');
var ocuser = document.getElementById("oc-user").value;
var ocuser = ocuser.replace (/^/,'OpenCollective Profile: ');
var description = name + "\n\n" + aboutme + "\n\n" + howfound + "\n\n" + ocuser;
console.log('Description:', description);
fetch(url, {
method: 'POST',
headers: {
'authorization': 'token b8d8617bb6049c0e47b7bba5cd0931799f54609c',
'Content-Type': 'application/json',
},
body: JSON.stringify({ title: email, body: description }),
})
.then(response => response.json())
.then(result => {
console.log('Success:', result);
alert("Votre demande a été soumise. Un membre d'un groupe de travail va traiter votre demande sous peu. Si vous ne recevez pas de nouvelle d'ici sept jours, contactez-vous via support@ilot.io.");
})
.catch(error => {
console.error('Error:', error)
});
}
</script>

BIN
platforms.fr.mo Normal file

Binary file not shown.

177
platforms.fr.po Normal file
View file

@ -0,0 +1,177 @@
# SOME DESCRIPTIVE TITLE
# Copyright (C) YEAR Free Software Foundation, Inc.
# This file is distributed under the same license as the PACKAGE package.
# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
#
#, fuzzy
msgid ""
msgstr ""
"Project-Id-Version: ilot.io\n"
"POT-Creation-Date: 2024-09-08 12:48-0400\n"
"PO-Revision-Date: 2025-04-03 18:49-0400\n"
"Last-Translator: \n"
"Language-Team: dev@ayakael.net\n"
"Language: fr\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"X-Generator: Poedit 3.5\n"
#. type: Plain text
#, no-wrap
msgid "[[!meta title=\"Platforms\"]]\n"
msgstr "[[!meta title=\"Platformes\"]]\n"
#. type: Title #
#, no-wrap
msgid "[[The Cloud|https://ilot.io/apps/files]]"
msgstr "[[Le Cloud|https://ilot.io/apps/files]]"
#. type: Plain text
msgid ""
"The Cloud is an instance of [[Nextcloud|https://nextcloud.com/]], a "
"productivity collaboration platform analogous to Google Drive. An "
"**instance** is an autonomous version of a web service. In Nextcloud's case, "
"even though there exists an official service maintained by the developpers, "
"we are totally independant from them. The only thing that ties us to the "
"official instance is that we use the same underlying technology, hosted on "
"our own infrastructure."
msgstr ""
"Le Cloud est une instance de [[Nextcloud|https://nextcloud.com/]], une "
"plateforme de collaboration en matière de productivité analogue à Google "
"Drive. Une **instance** est une version autonome d'un service web. Dans le "
"cas de Nextcloud, même s'il existe un service officiel maintenu par les "
"développeurs, nous sommes totalement indépendants d'eux. La seule chose qui "
"nous lie à l'instance officielle est que nous utilisons la même technologie "
"sous-jacente, hébergée sur notre propre infrastructure."
#. type: Title #
#, no-wrap
msgid "Our Auxillary Services"
msgstr "Nos services auxiliaires"
#. type: Plain text
msgid ""
"The following platforms are more there as a support role. They allow better "
"management of the other platforms, and they are here to give you an overview "
"of our infrastructure."
msgstr ""
"Les plateformes suivantes ont plutôt un rôle de soutien. Elles permettent "
"une meilleure gestion des autres plateformes et sont là pour vous donner une "
"vue d'ensemble de notre infrastructure."
#. type: Bullet: '* '
msgid ""
"[[Auth|https://auth.ilot.io]], an instance of [[Authentik|https://"
"goauthentik.io]], is our unified authenticaton system. It is the service "
"that allows a membre to access all of our platforms using the same account. "
"From this space, you can also see all of the different spaces that you have "
"access to. It is also through Auth that you can change account settings, "
"like your password or email."
msgstr ""
"[[Auth|https://auth.ilot.io]], une instance de [[Authentik|https://"
"goauthentik.io]], est notre système d'authentification unifié. C'est le "
"service qui permet à un membre d'accéder à toutes nos plateformes en "
"utilisant le même compte. Depuis cet espace, vous pouvez également voir tous "
"les espaces auxquels vous avez accès. C'est également via Auth que vous "
"pouvez modifier les paramètres de votre compte, comme votre mot de passe ou "
"votre adresse électronique."
#. type: Bullet: '* '
msgid ""
"[[Support|https://support.ilot.io/en/hc/706927618]], an instance of "
"[[Freescout|https://freescout.net/]], is our technical support platform "
"where you can find guides on how to use ilot and where you can open support "
"tickets. You can go [[here|https://support.ilot.io/en/hc/706927618/3/how-to-"
"request-help?category_id=3]] for more details on how to ask for help."
msgstr ""
"[[Support|https://support.ilot.io/en/hc/706927618]], une instance de "
"[[Freescout|https://freescout.net/]], est notre plateforme d'assistance "
"technique où vous pouvez trouver des guides sur l'utilisation d'ilot et où "
"vous pouvez ouvrir des billets d'assistance. Vous pouvez consulter [[here|"
"https://support.ilot.io/fr/hc/706927618/3/comment-faire-une-demande-de-"
"soutien-technique?category_id=3]] pour plus de détails sur la manière de "
"demander de l'aide."
#. type: Bullet: '* '
msgid ""
"[[Status|https://status.ilot.io]], an instance of [[Uptime-Kuma|https://"
"github.com/louislam/uptime-kuma]], allows us to keep track of the state of "
"the network. If something goes down, Status will alert the technical working "
"group. If you have issues connecting to any of our platforms, you can go "
"there to see the state of the network."
msgstr ""
"[[Status|https://status.ilot.io]], une instance de [[Uptime-Kuma|https://"
"github.com/louislam/uptime-kuma]], nous permet de suivre l'état du réseau. "
"Si quelque chose tombe en panne, Status alertera le groupe de travail "
"technique. Si vous avez des difficultés à vous connecter à l'une de nos "
"plateformes, vous pouvez aller voir l'état du réseau."
#. type: Bullet: '* '
msgid ""
"[[Notif|https://notif.ilot.io/]], an instance of [[listmonk|https://listmonk."
"app/]], allows the working groups to easily communicate with the rest of the "
"membership in case of announcements or technical issues."
msgstr ""
"[[Notif|https://notif.ilot.io/]], une instance de [[listmonk|https://"
"listmonk.app/]], permet aux groupes de travail de communiquer facilement "
"avec le reste des membres en cas d'annonces ou de problèmes techniques."
#. type: Bullet: '* '
msgid ""
"[[Forge|https://forge.ilot.io]], an instance of [[Forgejo|https://forgejo."
"org/]], is a forge based on git that is the main developpment space for "
"ilot. It is used to [[track our bugs|https://forge.ilot.io/ilot/issues/"
"issues]], [[compile our platforms|https://forge.ilot.io/ilot/iports]] and "
"[[power our website|https://forge.ilot.io/ilot/ilot.io]]."
msgstr ""
"[[Forge|https://forge.ilot.io]], une instance de [[Forgejo|https://forgejo."
"org/]], est une forge basée sur git qui est le principal espace de "
"développement d'ilot. Elle est utilisée pour [[suivre nos bugs|https://forge."
"ilot.io/ilot/issues/issues]], [[compiler nos plateformes|https://forge.ilot."
"io/ilot/iports]] et [[alimenter notre site web|https://forge.ilot.io/ilot/"
"ilot.io]]."
#. type: Bullet: '* '
msgid ""
"[[Wiki|https://wiki.ilot.io]], an instance of [[Wiki.JS|https://js.wiki/]], "
"is a wiki engine that acts as a knowledge base for the community and for the "
"membership. Since the membership is engaged with various causes, we can "
"expect this space to eventually become a resource for those whose values "
"matches ours."
msgstr ""
"[[Wiki|https://wiki.ilot.io]], une instance de [[Wiki.JS|https://js.wiki/]], "
"est un moteur wiki qui agit comme une base de connaissances pour la "
"communauté et pour les membres. Comme les membres sont engagés dans diverses "
"causes, nous pouvons nous attendre à ce que cet espace devienne une "
"ressource pour ceux dont les valeurs correspondent aux nôtres."
#, no-wrap
#~ msgid "[[The Wiki|https://wiki.ilot.io]]"
#~ msgstr "[[Le Wiki|https://wiki.ilot.io]]"
#, no-wrap
#~ msgid "[[The Lab|https://lab.ilot.io]]"
#~ msgstr "[[Le Lab|https://lab.ilot.io]]"
#~ msgid ""
#~ "The Lab is an instance of [[GitLab|https://en.wikipedia.org/wiki/"
#~ "GitLab]], a forge based on Git that enables easier collaboration between "
#~ "developpers. As of now, it is the main developpment space for ilot, thus "
#~ "it is more used by the technical working group. If you are a developper, "
#~ "or use Git in your workflow, this is a cooperative alternative to GitHub. "
#~ "If you are curious, all of our known issues our tracked [[here|https://"
#~ "lab.ilot.io/ilot/issues/-/issues]]. Our very own website uses GitLab "
#~ "Pages as its backend and its source-code can be found [[here|https://lab."
#~ "ilot.io/ilot/ilot.io]]."
#~ msgstr ""
#~ "Le Lab est une instance de [[GitLab|https://en.wikipedia.org/wiki/"
#~ "GitLab]], une forge basée sur Git qui facilite la collaboration entre les "
#~ "développeurs. Pour l'instant, c'est le principal espace de développement "
#~ "d'ilot, et il est donc plus utilisé par le groupe de travail technique. "
#~ "Si vous êtes un développeur, ou si vous utilisez Git dans votre travail, "
#~ "c'est une alternative coopérative à GitHub. Si vous êtes curieux-ses, "
#~ "tous nos bogues informatiques connus sont suivis [[ici|https://lab.ilot."
#~ "io/ilot/issues/-/issues]]. Notre propre site web utilise GitLab Pages "
#~ "comme technology d'hébergement et son code source peut être trouvé [[ici|"
#~ "https://lab.ilot.io/ilot/ilot.io]]."

View file

@ -1,20 +1,8 @@
[[!meta title="Tools"]] [[!meta title="Platforms"]]
# [[The Cloud|https://ilot.io/apps/files]]
<header class="text-center"> The Cloud is an instance of [[Nextcloud|https://nextcloud.com/]], a productivity collaboration platform analogous to Google Drive. An **instance** is an autonomous version of a web service. In Nextcloud's case, even though there exists an official service maintained by the developpers, we are totally independant from them. The only thing that ties us to the official instance is that we use the same underlying technology, hosted on our own infrastructure.
<h1>TOOLS</h1>
<hr>
</header>
[[!img images/logo_cloud.png]]
ilot leverages open-source platforms to offer a set of online tools for our members. At the center of our infrastructure is [[Nextcloud|https://nextcloud.com], an opensource collaboration and file management platform analogous to Google Drive. Open-source platforms are technologies that allow anyone to deploy their own version - or instance - and build around it. In our case, we administer our own Nextcloud and have integrated a set of tools around it to augment it.
# Tools
[[!img images/logo_files.png]]
# Our Auxillary Services # Our Auxillary Services

114
platforms.pot Normal file
View file

@ -0,0 +1,114 @@
# SOME DESCRIPTIVE TITLE
# Copyright (C) YEAR Free Software Foundation, Inc.
# This file is distributed under the same license as the PACKAGE package.
# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
#
#, fuzzy
msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"POT-Creation-Date: 2024-09-11 14:44-0400\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL@li.org>\n"
"Language: \n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
#. type: Plain text
#, markdown-text, no-wrap
msgid "[[!meta title=\"Platforms\"]]\n"
msgstr ""
#. type: Title #
#, markdown-text, no-wrap
msgid "[[The Cloud|https://ilot.io/apps/files]]"
msgstr ""
#. type: Plain text
#, markdown-text
msgid ""
"The Cloud is an instance of [[Nextcloud|https://nextcloud.com/]], a "
"productivity collaboration platform analogous to Google Drive. An "
"**instance** is an autonomous version of a web service. In Nextcloud's case, "
"even though there exists an official service maintained by the developpers, "
"we are totally independant from them. The only thing that ties us to the "
"official instance is that we use the same underlying technology, hosted on "
"our own infrastructure."
msgstr ""
#. type: Title #
#, markdown-text, no-wrap
msgid "Our Auxillary Services"
msgstr ""
#. type: Plain text
#, markdown-text
msgid ""
"The following platforms are more there as a support role. They allow better "
"management of the other platforms, and they are here to give you an overview "
"of our infrastructure."
msgstr ""
#. type: Bullet: '* '
#, markdown-text
msgid ""
"[[Auth|https://auth.ilot.io]], an instance of "
"[[Authentik|https://goauthentik.io]], is our unified authenticaton "
"system. It is the service that allows a membre to access all of our "
"platforms using the same account. From this space, you can also see all of "
"the different spaces that you have access to. It is also through Auth that "
"you can change account settings, like your password or email."
msgstr ""
#. type: Bullet: '* '
#, markdown-text
msgid ""
"[[Support|https://support.ilot.io/en/hc/706927618]], an instance of "
"[[Freescout|https://freescout.net/]], is our technical support platform "
"where you can find guides on how to use ilot and where you can open support "
"tickets. You can go "
"[[here|https://support.ilot.io/en/hc/706927618/3/how-to-request-help?category_id=3]] "
"for more details on how to ask for help."
msgstr ""
#. type: Bullet: '* '
#, markdown-text
msgid ""
"[[Status|https://status.ilot.io]], an instance of "
"[[Uptime-Kuma|https://github.com/louislam/uptime-kuma]], allows us to keep "
"track of the state of the network. If something goes down, Status will alert "
"the technical working group. If you have issues connecting to any of our "
"platforms, you can go there to see the state of the network."
msgstr ""
#. type: Bullet: '* '
#, markdown-text
msgid ""
"[[Notif|https://notif.ilot.io/]], an instance of "
"[[listmonk|https://listmonk.app/]], allows the working groups to easily "
"communicate with the rest of the membership in case of announcements or "
"technical issues."
msgstr ""
#. type: Bullet: '* '
#, markdown-text
msgid ""
"[[Forge|https://forge.ilot.io]], an instance of "
"[[Forgejo|https://forgejo.org/]], is a forge based on git that is the main "
"developpment space for ilot. It is used to [[track our "
"bugs|https://forge.ilot.io/ilot/issues/issues]], [[compile our "
"platforms|https://forge.ilot.io/ilot/iports]] and [[power our "
"website|https://forge.ilot.io/ilot/ilot.io]]."
msgstr ""
#. type: Bullet: '* '
#, markdown-text
msgid ""
"[[Wiki|https://wiki.ilot.io]], an instance of [[Wiki.JS|https://js.wiki/]], "
"is a wiki engine that acts as a knowledge base for the community and for the "
"membership. Since the membership is engaged with various causes, we can "
"expect this space to eventually become a resource for those whose values "
"matches ours."
msgstr ""

View file

@ -1,7 +1,7 @@
<!-- the anchors force ikiwiki to use a tags instead of spans. hopefully. --> <!-- the anchors force ikiwiki to use a tags instead of spans. hopefully. -->
<ul class="navbar-nav nav-link align-items-center ms-auto"> <ul class="navbar-nav nav-link align-items-center ms-auto">
<li>[[Home|index]]</li> <li>[[Home|index]]</li>
<li>[[Tools]]</li> <li>[[Platforms]]</li>
<li>[[Join]]</li> <li>[[Join]]</li>
<li class="btn p-0 border sign-in">[[Your Files|https://ilot.io/apps/files]]</li> <li class="btn p-0 border sign-in">[[Your Files|https://ilot.io/apps/files]]</li>
</ul> </ul>