2024-01-04 00:41:32 +01:00
<!DOCTYPE html>
< html lang = "fr" >
< head >
< meta charset = "UTF-8" >
< meta name = "viewport" content = "width=device-width, initial-scale=1.0" >
2024-01-05 18:10:23 +01:00
< title > Infokiosque LOL< / title >
2024-01-04 00:41:32 +01:00
< link rel = "stylesheet" href = "/_src/styles/global.css" / >
< / head >
2024-01-05 18:59:42 +01:00
< body vocab = "http://schema.org/" typeof = "Website" resource = "." class = "home" >
2024-01-04 00:41:32 +01:00
< img src = "/_src/img/logo_kiosque.svg" alt = "Logo du site" / >
2024-01-05 18:59:42 +01:00
< h1 property = "name" > Infokiosque du LOL < small > Brochures et autres textes< / small > < / h1 >
2024-01-04 00:41:32 +01:00
2024-01-05 19:18:23 +01:00
< nav >
< ul >
< li > < a href = "https://labolyon.fr" > Labolyon.fr< / a > < / li >
< li > < a href = "https://wiki.labolyon.fr/doku.php?id=infokiosque" > Wiki< / a > < / li >
< / ul >
< / nav >
2024-01-04 00:41:32 +01:00
< section id = "publications"
2024-01-05 18:10:23 +01:00
property="hasPart"
2024-01-04 00:41:32 +01:00
typeof="Collection"
resource="#publications" >
2024-01-09 19:14:01 +01:00
< h2 property = "name" > Textes à emporter< / h2 >
2024-01-09 19:09:17 +01:00
< p property = "description" > Ces textes sont disponibles au LOL et emportables a prix libres. Vous pouvez aussi en telecharger le contenu librement et le redistribuer comme vous le voulez.< / p >
2024-01-04 00:41:32 +01:00
< ul >
2024-02-02 19:03:30 +01:00
< li > < a property = "hasPart" href = "publications/2023-02-02-datafoire-steakernet-sympa/" >
Datafoire, sneakernet sympa < small > du outdoor computer club< / small >
< / a > < / li >
2024-01-04 00:41:32 +01:00
< li > < a property = "hasPart" href = "publications/2023-01-03-detruire-le-capitalisme-de-surveillance/" >
Détruire le capitalisme de surveillance < small > par Cory Doctorow< / small >
< / a > < / li >
2024-01-09 19:20:49 +01:00
< li > < a property = "hasPart" href = "publications/2023-01-01-une-critique-a-la-va-vite-de-la-pensee-primitiviste-et-anticiv/" >
Une critique à la va-vite de la pensée primitiviste et anticiv< / small >
< / a > < / li >
2024-01-04 00:41:32 +01:00
< / ul >
< / section >
2024-01-09 19:09:17 +01:00
< section id = "empruntables"
property="hasPart"
typeof="Collection"
resource="#empruntables" >
2024-01-09 19:14:01 +01:00
< h2 property = "name" > Textes à lire sur place< / h2 >
2024-01-09 19:09:17 +01:00
2024-01-09 19:14:01 +01:00
< p property = "description" > Ces textes sont à lire sur place ou empruntable dans la bibliotheque du LOL.< / p >
2024-01-09 19:09:17 +01:00
< ul >
< li > < a property = "hasPart" href = "empruntables/a-bout-de-flux/" >
À bout de flux < small > de Fanny Lopez< / small >
< / a > < / li >
< li > < a href = "empruntables/angles-mort-du-numerique-ubiquitaire/" >
Angles morts du numérique ubiquitaire < small > de Yves Citton, Marie Lechner et Masure Anthony< / small >
< / a > < / li >
< li > < a href = "empruntables/en-toute-puissance/" >
En toute puissance, manuel d’ autodétermination radicale < small > de Viciss Hackso< / small >
< / a > < / li >
< li > < a href = "empruntables/hacker-protesters/" >
Hacker Protester : guide pratique des outils de lutte citoyenne < small > de Geoffrey Dorne< / small >
< / a > < / li >
< li > < a href = "empruntables/le-mythe-de-l-entrepreneur/" >
Le mythe de l'entrepruneur < small > de Anthony Galluzzo< / small >
< / a > < / li >
2024-01-09 19:34:14 +01:00
< li > < a href = "empruntables/guide-d-autodéfense-numerique/" >
Guide d’ Autodéfense Numérique, < small > Edition Tahin Party< / small >
< / a > < / li >
2024-01-13 17:56:45 +01:00
< li > < a href = "empruntables/race-after-technology/" >
Race after technology < small > de Ruha Benjamin< / small >
< / a > < / li >
2024-01-09 19:09:17 +01:00
< / ul >
< / section >
2024-01-05 18:10:23 +01:00
< template id = "publication-card-tmplt" >
< article class = "publication-card" >
< img property = "image" src = "" alt = "Couverture" / >
< h1 property = "name" > < / h1 >
< div class = "meta" >
< span > Par < span property = "author" > < / span > < / span >
< / div >
< p property = "abstract" > < / p >
< nav >
< a href = "" property = "url" > Plus d'infos < i > 🠺< / i > < / a >
< / nav >
< / article >
< / template >
< script type = "module" >
2024-01-05 21:45:07 +01:00
import {fetchDocumentData, takeFirst, takeUrl} from "/_src/js/utils/data.js"
2024-01-05 18:10:23 +01:00
2024-01-09 19:09:17 +01:00
initBookList(document.getElementById("publications"))
initBookList(document.getElementById("empruntables"))
2024-01-05 18:10:23 +01:00
2024-01-09 19:09:17 +01:00
async function initBookList(listElement) {
for(let it of listElement.querySelectorAll("ul > li a[href]")) {
2024-01-05 18:10:23 +01:00
let data = null;
try {
data = await fetchDocumentData(it.href)
} catch(e) {
continue;
}
let card = null;
try {
card = makePublicationCard(data)
} catch(e) {
continue;
}
it.innerHTML = ""
it.append(card)
}
}
function makePublicationCard(data){
let template = document.getElementById("publication-card-tmplt").content.cloneNode(true);
let root = template.children[0]
root.setAttribute("resource", takeFirst(data["@id"]))
root.setAttribute("typeof", takeFirst(data["@type"]))
let name = takeFirst(data.name)
if(name){
template.querySelector('[property="name"]').textContent = name
} else {
throw new Error("Provided data doesn't have a \"name\" field");
}
let author = takeFirst(data.author)
if(author){
template.querySelector('[property="author"]').textContent = author
} else {
template.querySelector('[property="author"]').parentElement.remove()
}
let abstract = takeFirst(data.abstract)
if(abstract){
template.querySelector('[property="abstract"]').textContent = abstract
} else {
template.querySelector('[property="abstract"]').remove()
}
let image = takeUrl(data.image)
if(image){
template.querySelector('[property="image"]').src = image
} else {
template.querySelector('[property="image"]').remove()
}
let url = takeUrl(data.url)
template.querySelector('[property="url"]').href = url || takeUrl(data)
return template
}
< / script >
2024-01-04 00:41:32 +01:00
< / body >
< / html >