Browse Source

prima versione del sito in pelican

putro 6 months ago
commit
ceacdb8ccf

+ 5
- 0
.gitignore View File

@@ -0,0 +1,5 @@
1
+__pycache__/
2
+cache/
3
+output/
4
+*.pyc
5
+pelican.pid

+ 87
- 0
LEGGIMI.md View File

@@ -0,0 +1,87 @@
1
+# PELICAN WEBSITE HOWTO
2
+
3
+## pelicanconf.py:
4
+
5
+in questo file si definiscono un tot di cose, tra cui:
6
+
7
+ i contenuti stanno nella cartella "content", vengono scritti in markdown e sono di due tipi:
8
+
9
+ - pagine statiche (nella sottocartella "pages")
10
+ - articoli tipo blog (nella sottocartella "blog")
11
+ 
12
+ una volta elaborati sono salvati nella cartella "output" che e' quella
13
+ che conterrà i files .html del sito vero e proprio
14
+ 
15
+in testa ai files .md devono essere definiti dei metadati:
16
+
17
+per le pagine statiche: 
18
+
19
+- Title  (il titolo che poi compare a video nella pagina finale html) 
20
+- Slug (il nome con cui la pagina sara' salvata nella cartella output)
21
+
22
+per gli articoli ad es.:
23
+
24
+- Title: Comunicato Unit hacklab su annuncio sgombero Macao
25
+- Author: Unit 
26
+- Category: comunicato
27
+- Date: 2018-09-26
28
+- Tags: sgombero
29
+
30
+nella cartella output le pagine sono salvate nella sottocartella pages 
31
+(direttiva PAGE_SAVE_AS)
32
+e gli articoli nella cartella blog (direttiva ARTICLE_SAVE_AS)
33
+
34
+gli articoli finiscono nel feed rss, le pagine no, quindi se si crea una pagina 
35
+e' bene fare anche un articolo che la "presenti".
36
+
37
+
38
+il tema usato e' "minimo" di dan (ho fatto solo una piccola modifica per includere il logo di unit in tutte le pagine (vedi templates/base.html))
39
+in realta' andrebbe modificato il css in modo che se e' definito ad esempio SITE_LOGO in pelicanconf.py,  compaia il logo di fianco a Unit,
40
+e non sotto
41
+(per come fare vedi ad es.
42
+> https://github.com/sQu4rks/crowsfoot/blob/30509fc0cf6d4c29f2d1d9ec87783340a7158538/templates/base.html
43
+> https://github.com/nairobilug/pelican-alchemy/blob/f235c81bf323e6134b01915fc9a46b5e89ac238b/alchemy/templates/base.html
44
+
45
+altra cosa che si potrebbe fare:  usare il tema come submodulo git del sito, in modo che siano due cose separate, ma al momento minimo non e' in git come se fosse solo un tema (cioe' solo le cartelle templates e static)
46
+c'e' anche altro intorno, andrebbe sistemato.
47
+
48
+
49
+in cima alla pagina c'e' un piccolo menu con poche voci:
50
+
51
+- HOME (index)
52
+- BLOG (lista degli articoli con anteprima (articles.html),  volendo ci sarebbe anche la pagina archives.html che contiene la lista degli articoli ma senza anteprima.
53
+- CATEGORIE (lista delle categorie degli articoli, cliccabile)
54
+- TAG (lista dei tag degli articoli, cliccabile)
55
+- CONTATTI  (pagina che riporta i contatti)
56
+- RSS (link al feed rss (atom)) 
57
+ 
58
+ci sono due cartelle statiche:
59
+
60
+- media (che contiene i materiali delle pagine, pdf, immagini etc.)
61
+- images (che contiene le immagini della struttura del sito, al momento solo il logo))
62
+
63
+
64
+
65
+## publishconf.py
66
+
67
+questo file definisce solo il SITEURL in produzione e l'indirizzo dei feed rss e atom creati
68
+(quando sostituiremo il sito perderemo tutti i feed precedenti, a meno di creare degli articoli nel blog,
69
+pero' poi mi sa che chi ha sottoscritto il feed li ricevera' di nuovo.... ?
70
+per or
71
+
72
+
73
+## Makefile
74
+
75
+e' il makefile standard con le istruzioni per SSH per caricare il sito
76
+e un nuovo comando "production" per copiare il sito al suo posto 
77
+(ma funziona solo se viene lanciato da zaphoda)
78
+
79
+
80
+TODO:
81
+il sito ora e' visibile su https://unit.abbiamoundominio.org/tmp/,
82
+visto che sta in una sottocartella, in produzione per i menuitems andra' aggiunto un / prima di ogni pagina
83
+stessa cosa per il tema, e l'immagine del logo dovra' avere uno / prima del path
84
+(questo perche' senno' se sei nella cartella /categories/qualcosa poi non funzionano piu' i link, se sono relativi)
85
+
86
+valutare magari di mettere una pagina 404 (o meglio ancora 40x) da configurare in nginx.
87
+

+ 92
- 0
Makefile View File

@@ -0,0 +1,92 @@
1
+PY?=python3
2
+PELICAN?=pelican
3
+PELICANOPTS=
4
+
5
+BASEDIR=$(CURDIR)
6
+INPUTDIR=$(BASEDIR)/content
7
+OUTPUTDIR=$(BASEDIR)/output
8
+CONFFILE=$(BASEDIR)/pelicanconf.py
9
+PUBLISHCONF=$(BASEDIR)/publishconf.py
10
+
11
+SSH_HOST=abbiamoundominio.org
12
+SSH_PORT=22
13
+SSH_USER=${USER}
14
+SSH_TARGET_DIR=/var/www/unit.abbiamoundominio.org/tmp/
15
+
16
+DEBUG ?= 0
17
+ifeq ($(DEBUG), 1)
18
+	PELICANOPTS += -D
19
+endif
20
+
21
+RELATIVE ?= 0
22
+ifeq ($(RELATIVE), 1)
23
+	PELICANOPTS += --relative-urls
24
+endif
25
+
26
+help:
27
+	@echo 'Makefile for a pelican Web site                                           '
28
+	@echo '                                                                          '
29
+	@echo 'Usage:                                                                    '
30
+	@echo '   make html                           (re)generate the web site          '
31
+	@echo '   make clean                          remove the generated files         '
32
+	@echo '   make regenerate                     regenerate files upon modification '
33
+	@echo '   make publish                        generate using production settings '
34
+	@echo '   make serve [PORT=8000]              serve site at http://localhost:8000'
35
+	@echo '   make serve-global [SERVER=0.0.0.0]  serve (as root) to $(SERVER):80    '
36
+	@echo '   make devserver [PORT=8000]          serve and regenerate together      '
37
+	@echo '   make ssh_upload                     upload the web site via SSH        '
38
+	@echo '   make rsync_upload                   upload the web site via rsync+ssh  '
39
+	@echo '   make production                     copy the site locally 			 '
40
+	@echo '                                                                          '
41
+	@echo 'Set the DEBUG variable to 1 to enable debugging, e.g. make DEBUG=1 html   '
42
+	@echo 'Set the RELATIVE variable to 1 to enable relative urls                    '
43
+	@echo '                                                                          '
44
+
45
+html:
46
+	$(PELICAN) $(INPUTDIR) -o $(OUTPUTDIR) -s $(CONFFILE) $(PELICANOPTS)
47
+
48
+clean:
49
+	[ ! -d $(OUTPUTDIR) ] || rm -rf $(OUTPUTDIR)
50
+
51
+regenerate:
52
+	$(PELICAN) -r $(INPUTDIR) -o $(OUTPUTDIR) -s $(CONFFILE) $(PELICANOPTS)
53
+
54
+serve:
55
+ifdef PORT
56
+	$(PELICAN) -l $(INPUTDIR) -o $(OUTPUTDIR) -s $(CONFFILE) $(PELICANOPTS) -p $(PORT)
57
+else
58
+	$(PELICAN) -l $(INPUTDIR) -o $(OUTPUTDIR) -s $(CONFFILE) $(PELICANOPTS)
59
+endif
60
+
61
+serve-global:
62
+ifdef SERVER
63
+	$(PELICAN) -l $(INPUTDIR) -o $(OUTPUTDIR) -s $(CONFFILE) $(PELICANOPTS) -p $(PORT) -b $(SERVER)
64
+else
65
+	$(PELICAN) -l $(INPUTDIR) -o $(OUTPUTDIR) -s $(CONFFILE) $(PELICANOPTS) -p $(PORT) -b 0.0.0.0
66
+endif
67
+
68
+
69
+devserver:
70
+ifdef PORT
71
+	$(PELICAN) -lr $(INPUTDIR) -o $(OUTPUTDIR) -s $(CONFFILE) $(PELICANOPTS) -p $(PORT)
72
+else
73
+	$(PELICAN) -lr $(INPUTDIR) -o $(OUTPUTDIR) -s $(CONFFILE) $(PELICANOPTS)
74
+endif
75
+
76
+publish:
77
+	$(PELICAN) $(INPUTDIR) -o $(OUTPUTDIR) -s $(PUBLISHCONF) $(PELICANOPTS)
78
+
79
+ssh_upload: publish
80
+	scp -P $(SSH_PORT) -r $(OUTPUTDIR)/* $(SSH_USER)@$(SSH_HOST):$(SSH_TARGET_DIR)
81
+
82
+rsync_upload: publish
83
+	rsync -e "ssh -p $(SSH_PORT)" -P -rvzc --cvs-exclude --delete $(OUTPUTDIR)/ $(SSH_USER)@$(SSH_HOST):$(SSH_TARGET_DIR)
84
+
85
+production: publish
86
+ifeq "$(HOSTNAME)" "zaphoda"
87
+		cp -R $(OUTPUTDIR)/* $(SSH_TARGET_DIR)/
88
+else
89
+		echo "devi essere su zaphoda per lanciare questo comando"
90
+endif
91
+
92
+.PHONY: html help clean regenerate serve serve-global devserver stopserver publish ssh_upload rsync_upload

BIN
content/images/logo.png View File


BIN
content/media/c2c-screenshot-mobile.jpg View File


BIN
content/media/nolike.pdf View File


BIN
content/media/pmomp-flyer.png View File


+ 43
- 0
content/news/001-comunicato_sgombero.md View File

@@ -0,0 +1,43 @@
1
+Title: Comunicato Unit hacklab su annuncio sgombero Macao
2
+Category: comunicato
3
+Date: 2018-09-26
4
+Tags: sgombero
5
+
6
+Contesto: Milano 2018. Atmosfera di intolleranza civile.
7
+
8
+Unit   hacklab   e'   un  laboratorio   autogestito   di
9
+sperimentazione tecnica e  politica, le nostre attivita'
10
+comprendono   dai  corsi   gratuiti  di   elettronica  e
11
+informatica alla divulgazione delle pratiche di gestione
12
+della privacy sotto forma di incontri e convegni.
13
+
14
+il  Comune  di  Milano, zelante,  anticipa  l'editto  di
15
+Matteo Salvini e comunica il prossimo sgombero di Macao,
16
+lo    spazio    culturale   eterogeneo    dal    respiro
17
+internazionale situato in Viale Molise 68 a Milano nella
18
+palazzina inutilizzata della Borsa della carne, liberato
19
+nel 2012, al cui interno dal  2016 ci siamo anche noi di
20
+Unit hacklab.
21
+
22
+Lo sgombero  e' funzionale alla vendita  delle palazzine
23
+di Viale Molise e viene annunciato accusando problemi di
24
+bilancio  mentre in  realta' il  Comune sta  parlando di
25
+trasferire  Citta'  studi,  di   riaprire  i  navigli  e
26
+addirittura di fare le  olimpiadi invernali. I soldi non
27
+sono  il problema.   Il problema  e' politico,  rispetto
28
+all'autogestione.  Ricordiamo  che   i  luoghi  liberati
29
+dall'inutilizzo  e autogestiti,  non sono  riconducibili
30
+solo a spazi di aggregazione  per i giovani. Sono luoghi
31
+di  sperimentazione e  produzione politica  e culturale,
32
+naturalmente  liberi  dalle  dinamiche commerciali  e  a
33
+pensiero  unico  che  caratterizzano gli  spazi  offerti
34
+dalle autorita'.
35
+
36
+Il  Comune di  Milano ha  proposto uno  sgombero "soft",
37
+ricambiamo con  un anatema commisurato: Possa  il vostro
38
+winzozz computer farvi BEEP, e non potete uscire.
39
+
40
+Noi  di Unit  hacklab, per  nostra natura,  non sappiamo
41
+come sparire cosi' facilmente.
42
+
43
+eof

+ 9
- 0
content/news/002-welcome_pelican.md View File

@@ -0,0 +1,9 @@
1
+Title: Benvenuto pellicano
2
+Category: news
3
+Date: 2019-03-22
4
+Tags: pelican
5
+
6
+Il sito e' stato convertito a pelican, un software 
7
+per generare siti statici in html.
8
+
9
+

+ 13
- 0
content/pages/c2c.md View File

@@ -0,0 +1,13 @@
1
+Title: Cheeck2Cheeck
2
+Slug: c2c
3
+
4
+
5
+La scatoletta con wifi sconnesso da internet collega le persone vicine per fare chat e 
6
+condivisione documenti. 
7
+c2c e' un social network libero, mobile ed estemporaneo che non ha bisogno di registrazione. 
8
+Ispirato dalle radio pirata e dal movimento della cultura libera, cheek2cheek e' 
9
+un'implementazione di Unit hacklab della [PirateBOX](https://www.piratebox.cc/faq).
10
+
11
+
12
+![c2c screenshot mobile](media/c2c-screenshot-mobile.jpg)
13
+

+ 8
- 0
content/pages/contatti.md View File

@@ -0,0 +1,8 @@
1
+Title: contatti
2
+Slug: contatti
3
+
4
+puoi scriverci all'indirizzo mail: _unit at paranoici dot org_
5
+
6
+ci trovi su IRC nel canale _#unit_ del server <a href="https://www.autistici.org/docs/irc/">irc.autistici.org</a>
7
+
8
+o puoi passare a trovarci il mercoledi sera presso <a href="https://www.openstreetmap.org/node/2709091290">Macao, in via Molise 68 a Milano</a>

+ 31
- 0
content/pages/criptolibretto.md View File

@@ -0,0 +1,31 @@
1
+Title: Criptolibretto
2
+Slug: criptolibretto
3
+
4
+
5
+Un criptolibretto in puro testo con formattazione markdown, convertibile in PDF via pandoc 
6
+e stampabile in formato pieghevole. Con documentazione. 
7
+
8
+Il criptolibretto e' in continuo divenire, qui si trova la piu' recente versione approvata, 
9
+nel formato pieghevole croccante stampabile A5 e nel classico formato A4. Per la versione unstable, seguire il git. 
10
+
11
+
12
+
13
+[Criptolibretto pieghevole Pdf da stampa](https://unit.abbiamoundominio.org/criptolibretto/book-a5-signature.pdf)
14
+
15
+24 gennaio 2019
16
+
17
+SHA256(book-a5-signature.pdf)= 5c3b861708e05d9adac0fcbaab2771bec718239a043883556bdf63e158e5be10 
18
+
19
+
20
+[Criptolibretto Pdf](https://unit.abbiamoundominio.org/criptolibretto/book-a4.pdf)
21
+
22
+24 gennaio 2019
23
+
24
+SHA256(book-a4.pdf)= 84c059584de8bc98628ce22de0eb57af7d49afa692df974795f551c02ab42549 
25
+
26
+
27
+Sorgente disponibile al [repositorio git](https://git.abbiamoundominio.org/unit/criptolibretto)
28
+
29
+
30
+
31
+

+ 67
- 0
content/pages/faq.md View File

@@ -0,0 +1,67 @@
1
+Title: FAQ
2
+Slug: faq
3
+
4
+
5
+
6
+Questa e' la nostra pagina delle F.A.Q.
7
+le Frequented Asked Questions, le Domande Poste di Frequente.
8
+
9
+== Cosa e' Unit? ==
10
+
11
+E' un hacklab.
12
+
13
+== Perche' il nome Unit? ==
14
+
15
+E' il nome della tupla vuota di haskell.
16
+
17
+[https://en.wikipedia.org/wiki/Tuple](https://en.wikipedia.org/wiki/Tuple)
18
+
19
+[https://en.wikipedia.org/wiki/Haskell_(programming_language)](https://en.wikipedia.org/wiki/Haskell_(programming_language))
20
+
21
+Qui trovi delucidazioni sul logo.
22
+
23
+[http://stackoverflow.com/questions/16892570/what-is-in-haskell-exactly](http://stackoverflow.com/questions/16892570/what-is-in-haskell-exactly)
24
+
25
+== Cos'e' un hackerspace? ==
26
+
27
+Guarda il video: hackerspace design patterns by Mitch
28
+
29
+[https://www.youtube.com/watch?v=zr76In2h0fE](https://www.youtube.com/watch?v=zr76In2h0fE)
30
+
31
+Piu' sul come che sul cosa, qui ci sono delle slide.
32
+
33
+[https://wiki.hackerspaces.org/images/8/8e/Hacker-Space-Design-Patterns.pdf](https://wiki.hackerspaces.org/images/8/8e/Hacker-Space-Design-Patterns.pdf)
34
+
35
+== Cos'e' un hacklab? ==
36
+
37
+Un hackerspace in movimento.
38
+
39
+Unit hacklab e' un laboratorio autogestito di sperimentazione tecnica
40
+e politica, le nostre attivita' comprendono corsi gratuiti di
41
+elettronica e informatica e divulgazione delle pratiche di gestione
42
+della privacy sotto forma di incontri e convegni.  Ci occupiamo non
43
+solo di tecnica, ma anche di politica in quanto la tecnologia non e'
44
+neutra.
45
+
46
+== Chi e' un hacker? ==
47
+
48
+Colei, colui o colacaso che gode dello spirito dell'intelligenza giocosa.
49
+
50
+== Come posso incontrarvi? ==
51
+
52
+Chiedi a chi ti ha mandato a questo sito di accompagnarti al prossimo
53
+incontro.
54
+
55
+== Come posso contattarvi? ==
56
+
57
+Puoi mandarci una mail a unit [at] paranoici [dot] org o join sul
58
+network IRC Autistici/Inventati il canale #unit.
59
+
60
+== Non voglio incontrarvi, voglio solo delle risorse su che software usare ==
61
+
62
+Ne trovi qui:
63
+
64
+[https://prism-break.org/it/](https://prism-break.org/it/)
65
+
66
+
67
+

+ 93
- 0
content/pages/howto_mailinglist.md View File

@@ -0,0 +1,93 @@
1
+Title: Linee guida mailing list
2
+Slug: howto_mailinglist
3
+
4
+
5
+
6
+# Linee guida: Mailing list
7
+
8
+## Non usare HTML
9
+
10
+Il testo semplice è buono. Tutti lo leggono, sempre, con piacere.
11
+
12
+Meglio scrivere in formato testo semplice. Alcuni programmi di default compongono le email in HTML. 
13
+Frugare tra le impostazioni ci permetterà di impostare la modalità testo semplice.
14
+
15
+Nota che l'HTML viene inviato nelle email sotto forma di allegato, ma non è la email.
16
+
17
+## Non mandare allegati enormi
18
+
19
+L'allegato mandato per e-mail viene copiato per ogni iscritto alla lista, intasando il provider, 
20
+e ci si tiene a non intasarlo, specie se è autogestito.
21
+
22
+Inoltre potrebbe generare acidità in chi avesse una connessione che paga a consumo.
23
+
24
+Per evitare di mandare allegati pesanti in lista è bene usare un servizio esterno e mandare il link nella mail.
25
+
26
+Unit ha un servizio di storage cloud e dovresti sapere come accedere. Altrimenti dovresti chiederlo in mailing list.
27
+
28
+## Oggetto delle e-mail
29
+
30
+Usa un oggetto sensato, che predica il contenuto della mail.
31
+
32
+Serve a farsi leggere e anche a ritrovare la mail in futuro.
33
+
34
+    Esempio bene - Subject: i miei 2c sulla questione manifesto
35
+
36
+    Esempio male - Subject: ciao 
37
+
38
+## Porta rispetto per il thread
39
+
40
+Quando rispondi a una mail, attieniti all'oggetto.
41
+
42
+In questo modo si può seguire il filo del discorso (che chiamiamo thread) e nessuno ti accuserà mai di 
43
+fare thread-hijacking, cioè di mischiare argomenti.
44
+
45
+Se si devono dire cose nuove e non inerenti a un thread, meglio mandare una mail nuova con un subject nuovo.
46
+
47
+Diventa così facile cercare tra le vecchie discussioni.
48
+
49
+Nota che non basta cancellare un subject e scriverne un altro al suo posto per creare un nuovo thread, 
50
+per creare un nuovo thread devi mandare una nuova mail alla lista. Se rispondi a un thread già esistente, 
51
+pure che cambi il subject, resta lo stesso thread.
52
+
53
+## Quotare
54
+
55
+Quotare significa riportare parti della e-mail a cui stai rispondendo in modo da dare maggiore contesto alla tua risposta.
56
+
57
+Una riga quotata è preceduta dal simbolo di maggiore: >.
58
+
59
+    > appuntamento mercoledì sera alle 8
60
+    Ci sono, ma arriverò alle 21
61
+
62
+Quota soltanto ciò che serve. Non quotare intere e-mail per rispondere soltanto: "Ok".
63
+
64
+(A meno che non rispondi a una mail formattata con indici nel qual caso considera di lasciare anche un riferimento agli argomenti, 
65
+che pure non citi, ma non cancelli per gli altri dal thread.)
66
+
67
+Il contenuto della mail a cui si risponde (il quote) si quota sopra (e non sotto) la tua risposta.
68
+
69
+## Evitare il top-posting
70
+
71
+    Risposta: Perché confonde l'ordine con il quale si legge il testo
72
+    Domanda: Perché il Top-posting non si fa?
73
+    Risposta: Il Top-Posting
74
+    Domanda: Qual'è la cosa più noiosa delle email? 
75
+
76
+Top-posting significa scrivere sopra il quote. Ottiene l'effetto indesiderato di invertire la cronologia del discorso 
77
+e rende difficile continuare la discussione.
78
+
79
+Esempio in top-posting:
80
+
81
+    io certo che vengo, ci vediamo davanti. Olivia
82
+    > io non ce la faccio proprio. Minnie
83
+    >> ciao, stasera venite a ballare al Calypso? Popeye
84
+
85
+Esempio in down-posting:
86
+
87
+    >> ciao, stasera venite a ballare al Calypso? Popeye
88
+    > io non ce la faccio proprio. Minnie
89
+    io certo che vengo, ci vediamo davanti. Olivia
90
+
91
+* * *
92
+
93
+_[Unit hacklab](http://unit.abbiamoundominio.org), 4 ottobre 2016_

+ 22
- 0
content/pages/index.md View File

@@ -0,0 +1,22 @@
1
+Title: unit state of mind
2
+Slug: index
3
+
4
+[manifesto](manifesto.html) | [faq](faq.html) | [newsletter](https://noise.autistici.org/mailman/listinfo/unit-news)
5
+
6
+[wiki](https://wiki.unit.abbiamoundominio.org/) | [git](https://git.abbiamoundominio.org/)  
7
+
8
+[pmomp](pmomp.html) | [criptolibretto](criptolibretto.html) | [cheek2cheek](c2c.html) | [lost](http://lost.abbiamoundominio.org/)
9
+
10
+[comunicati](comunicati/index.html) | [nolike](nolike.html)
11
+
12
+
13
+* * *
14
+
15
+
16
+mercoledi pomeriggio: [laboratorio di elettronica](https://wiki.unit.abbiamoundominio.org/LaboratorioElettronica)  
17
+
18
+venerdi sera: [free hacking friday](https://wiki.unit.abbiamoundominio.org/FHF)  
19
+
20
+_Se hai pensato che c'era un modo migliore, avevi ragione._
21
+
22
+

+ 52
- 0
content/pages/manifesto.md View File

@@ -0,0 +1,52 @@
1
+Title: Manifesto
2
+Slug: manifesto
3
+
4
+
5
+=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
6
+
7
+                         __   _   _       _ _     __
8
+                        / _| | | | |_____|_| |_  |_ \
9
+                       | |   | | | |  _  | |  _|   | |
10
+                       | |_  | |_| | | | | | |_   _| |
11
+                        \__| |_____|_| |_|_|___| |__/
12
+                          |       manifesto       |
13
+
14
+
15
+----[ 1 ]----------------------------------------------------------------------
16
+
17
+Noi unitariani veniamo relativamente in pace.
18
+Siamo multigenere e multiforma.
19
+Condividiamo l'idea di condividere la condivisione con di voi.
20
+
21
+----[ 1.1 ]--------------------------------------------------------------------
22
+
23
+Pensiamo che la tecnologia non sia neutra, che Internet possa diventare anche 
24
+un formidabile strumento di oppressione, che l'informazione e il software 
25
+debbano essere liberi, e che le conoscenze non siano merce, che il codice sia 
26
+l'espressione poetica dei misconosciuti legislatori del mondo e che legale non 
27
+significhi giusto. 
28
+
29
+Siamo antifascisti, antisessisti e antirazzisti. 
30
+
31
+Vogliamo creare spazi liberi da gerarchie e discriminazioni dove studiare e 
32
+divulgare quello che ci piace.  
33
+
34
+Siamo mossi dal desiderio, non crediamo ai confini. 
35
+
36
+Ci aggreghiamo per affinita', prendiamo decisioni con il metodo del consenso, 
37
+il nostro spazio e' una Zona Autonoma, condivideremo saperi senza fondare poteri.
38
+
39
+----[ 1.2 ]--------------------------------------------------------------------
40
+
41
+Noi abbiamo sempre nutrito il sogno di una cosa, 
42
+ma oggi abbiamo scelto di diventare coscienti.
43
+
44
+Non vogliamo tutto e subito e non abbiamo fretta, 
45
+ma aspettiamo una risposta per domani mattina. 
46
+
47
+----[ 2 - Domande ]------------------------------------------------------------
48
+
49
+Hai delle domande? E noi abbiamo delle FAQ:
50
+http://unit.abbiamoundominio.org/faq.html
51
+
52
+=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=

+ 127
- 0
content/pages/nolike.md
File diff suppressed because it is too large
View File


+ 20
- 0
content/pages/pmomp.md View File

@@ -0,0 +1,20 @@
1
+Title: Privacy Matters On My Phone
2
+Slug: pmomp
3
+Category: pmomp
4
+Tags: pmomp
5
+
6
+**Percorso in cinque passi per entrare in possesso del proprio smartphone dopo averlo comperato.**
7
+
8
+L'obiettivo di questo progetto e' di raccogliere e divulgare strumenti e conoscenze per utilizzare 
9
+uno smartphone Android senza cedere la propria privacy. Il progetto e' strutturato in cinque livelli, 
10
+dal piu' facile fino al livello piu' radicale senza compromessi. 
11
+Vogliamo rompere la sacralita' nell'utilizzo dello smartphone, il telefono intelligente (detto anche furbo) 
12
+e' un computer con il quale abbiamo un rapporto di intimita' e sul quale si possono e si devono mettere sopra le mani. 
13
+Si deve poter essere liberi sul proprio dispositivo. 
14
+
15
+Per il sorgente del libretto e slide, seguire il [git](https://git.abbiamoundominio.org/unit/pmomp)
16
+
17
+
18
+![pmomp flyer](media/pmomp-flyer.png)
19
+
20
+[Audio podcast](https://lost.abbiamoundominio.org/2019/03/privacy-matters-on-my-phone-2/)

+ 75
- 0
pelicanconf.py View File

@@ -0,0 +1,75 @@
1
+#!/usr/bin/env python
2
+# -*- coding: utf-8 -*- #
3
+from __future__ import unicode_literals
4
+
5
+AUTHOR = u'Unit'
6
+SITENAME = u'unit'
7
+# SITEURL = 'https://unit.abbiamoundominio.org'
8
+SITEURL = ''
9
+
10
+# SITESUBTITLE = ''
11
+
12
+PATH = 'content'
13
+PAGE_PATHS = ['pages']
14
+ARTICLE_PATHS = ['blog']
15
+STATIC_PATHS = ['images', 'media']
16
+
17
+TIMEZONE = 'Europe/Rome'
18
+
19
+DEFAULT_LANG = u'it'
20
+
21
+DEFAULT_PAGINATION = 3
22
+DEFAULT_DATE = 'fs'
23
+DEFAULT_DATE_FORMAT = '%d %B %Y'
24
+
25
+RSS_FEED_SUMMARY_ONLY = True
26
+
27
+# Feed generation is usually not desired when developing
28
+FEED_ALL_ATOM = None
29
+FEED_ALL_RSS = None
30
+CATEGORY_FEED_ATOM = None
31
+TRANSLATION_FEED_ATOM = None
32
+AUTHOR_FEED_ATOM = None
33
+AUTHOR_FEED_RSS = None
34
+
35
+LINKS = None
36
+SOCIAL = None
37
+
38
+DEFAULT_PAGINATION = False
39
+
40
+DEFAULT_METADATA = {'unit hacklab': 'This is a Game Planet'}
41
+
42
+# Uncomment following line if you want document-relative URLs when developing
43
+# RELATIVE_URLS = True
44
+
45
+MARKDOWN = {
46
+    'extension_configs': {
47
+        'markdown.extensions.codehilite': {'css_class': 'highlight'},
48
+        'markdown.extensions.extra': {},
49
+        'markdown.extensions.meta': {},
50
+    },
51
+    'output_format': 'html5',
52
+}
53
+
54
+WITH_FUTURE_DATES = False
55
+
56
+THEME = 'themes/minimo'
57
+
58
+PAGE_URL = '{slug}.html'
59
+PAGE_SAVE_AS = '{slug}.html'
60
+ARTICLE_URL = 'blog/{date:%Y-%m-%d}-{slug}.html'
61
+ARTICLE_SAVE_AS = 'blog/{date:%Y-%m-%d}-{slug}.html'
62
+
63
+
64
+INDEX_SAVE_AS = 'articles.html'
65
+
66
+USE_FOLDER_AS_CATEGORY = True
67
+DISPLAY_PAGES_ON_MENU = False
68
+DISPLAY_CATEGORIES_ON_MENU = False
69
+
70
+MENUITEMS = (('HOME |', 'index.html'),
71
+             ('NEWS |', 'articles.html'),
72
+             ('CATEGORIE |', 'categories.html'),
73
+             ('TAG |', 'tags.html'),
74
+             ('CONTATTI |', 'contatti.html'),
75
+             ('RSS', 'feeds/all.atom.xml'),)

+ 25
- 0
publishconf.py View File

@@ -0,0 +1,25 @@
1
+#!/usr/bin/env python
2
+# -*- coding: utf-8 -*- #
3
+from __future__ import unicode_literals
4
+
5
+# This file is only used if you use `make publish` or
6
+# explicitly specify it as your config file.
7
+
8
+import os
9
+import sys
10
+sys.path.append(os.curdir)
11
+from pelicanconf import *
12
+
13
+# If your site is available via HTTPS, make sure SITEURL begins with https://
14
+SITEURL = 'https://unit.abbiamoundominio.org/tmp/'
15
+RELATIVE_URLS = False
16
+
17
+FEED_ALL_ATOM = 'feeds.atom.xml'
18
+FEED_ALL_RSS = 'feeds.xml'
19
+
20
+DELETE_OUTPUT_DIRECTORY = True
21
+
22
+# Following items are often useful when publishing
23
+
24
+#DISQUS_SITENAME = ""
25
+#GOOGLE_ANALYTICS = ""

+ 80
- 0
tasks.py View File

@@ -0,0 +1,80 @@
1
+# -*- coding: utf-8 -*-
2
+
3
+import os
4
+import shutil
5
+import sys
6
+import datetime
7
+
8
+from invoke import task
9
+from invoke.util import cd
10
+from pelican.server import ComplexHTTPRequestHandler, RootedHTTPServer
11
+
12
+CONFIG = {
13
+    # Local path configuration (can be absolute or relative to tasks.py)
14
+    'deploy_path': 'output',
15
+    # Remote server configuration
16
+    'production': 'root@abbiamoundominio.org:22',
17
+    'dest_path': '/var/www/unit.abbiamoundominio.org/',
18
+    # Port for `serve`
19
+    'port': 8000,
20
+}
21
+
22
+@task
23
+def clean(c):
24
+    """Remove generated files"""
25
+    if os.path.isdir(CONFIG['deploy_path']):
26
+        shutil.rmtree(CONFIG['deploy_path'])
27
+        os.makedirs(CONFIG['deploy_path'])
28
+
29
+@task
30
+def build(c):
31
+    """Build local version of site"""
32
+    c.run('pelican -s pelicanconf.py')
33
+
34
+@task
35
+def rebuild(c):
36
+    """`build` with the delete switch"""
37
+    c.run('pelican -d -s pelicanconf.py')
38
+
39
+@task
40
+def regenerate(c):
41
+    """Automatically regenerate site upon file modification"""
42
+    c.run('pelican -r -s pelicanconf.py')
43
+
44
+@task
45
+def serve(c):
46
+    """Serve site at http://localhost:8000/"""
47
+
48
+    class AddressReuseTCPServer(RootedHTTPServer):
49
+        allow_reuse_address = True
50
+
51
+    server = AddressReuseTCPServer(
52
+        CONFIG['deploy_path'],
53
+        ('', CONFIG['port']),
54
+        ComplexHTTPRequestHandler)
55
+
56
+    sys.stderr.write('Serving on port {port} ...\n'.format(**CONFIG))
57
+    server.serve_forever()
58
+
59
+@task
60
+def reserve(c):
61
+    """`build`, then `serve`"""
62
+    build(c)
63
+    serve(c)
64
+
65
+@task
66
+def preview(c):
67
+    """Build production version of site"""
68
+    c.run('pelican -s publishconf.py')
69
+
70
+
71
+@task
72
+def publish(c):
73
+    """Publish to production via rsync"""
74
+    c.run('pelican -s publishconf.py')
75
+    c.run(
76
+        'rsync --delete --exclude ".DS_Store" -pthrvz -c '
77
+        '{} {production}:{dest_path}'.format(
78
+            CONFIG['deploy_path'].rstrip('/') + '/',
79
+            **CONFIG))
80
+

+ 37
- 0
themes/minimo/static/css/style.css View File

@@ -0,0 +1,37 @@
1
+body {
2
+    font-family: "Courier New", Courier, monospace
3
+    font-size: 100%;
4
+    background-color: #F4F4E8;
5
+    color: #333333;
6
+    min-width: 400px;
7
+    min-height: 200px;
8
+    margin: 2% 2%;
9
+    padding:0;
10
+    height:98%;;
11
+    margin-left: 33%;
12
+    margin-right: 33%;
13
+}
14
+
15
+a:link { color: #003399; text-decoration: none; }
16
+a:visited { color: #336699; text-decoration: none; }
17
+a:hover { color: #003399; background: #ff8c19; text-decoration: none; }
18
+
19
+h1 a { color: inherit !important }
20
+h2 a { color: inherit !important }
21
+h3 a { color: inherit !important }
22
+h4 a { color: inherit !important }
23
+h5 a { color: inherit !important }
24
+h6 a { color: inherit !important }
25
+
26
+#menu li {
27
+    display: inline;
28
+}
29
+
30
+#post-list {
31
+    margin-bottom: 1em;
32
+    margin-top: 1em;
33
+}
34
+
35
+pre {
36
+    margin: 2em 1em 2em 4em;
37
+}

+ 42
- 0
themes/minimo/templates/archives.html View File

@@ -0,0 +1,42 @@
1
+{% extends "index.html" %}
2
+{% block title %}Archivio {{ SITENAME }}{% endblock %}
3
+{% block ogtitle %}Archivio {{ SITENAME }}{% endblock %}
4
+{% block ogurl %}{{ SITEURL }}/archives.html{%endblock%}
5
+{% block canonicalurl %}{{ SITEURL }}/archives.html{%endblock%}
6
+
7
+{% block content %}
8
+<div class="span9">
9
+  <section>
10
+    <h1>{% block content_title %}Archivio per data{% endblock %}</h1>
11
+
12
+    {% for article in dates %}
13
+    {% set this_year = article.date.strftime('%Y') %}
14
+
15
+    {% if this_year != prev_year %}
16
+    <div class="row-fluid archive_row">
17
+      <div class="span1 archive_year">{{ this_year }}</div>
18
+    </div>
19
+    {% endif %}
20
+    {% if this_year != prev_year or this_month != prev_month %}
21
+    <div class="row-fluid archive_row">
22
+      <div class="offset1 span1 archive_month">{{ this_month }}</div>
23
+    </div>
24
+    {% endif %}
25
+    <div class="row-fluid archive_row">
26
+      {% if this_month != prev_month or this_day != prev_day %}
27
+      <div class="offset1 span1 archive_day">
28
+        {{ this_day }}
29
+      </div>
30
+      {% endif %}
31
+      <div class="{% if this_year == prev_year and this_month == prev_month and this_day == prev_day %}offset2 {% endif %}span10">
32
+        <dd><a href="{{ SITEURL }}/{{ article.url }}">{{ article.title }}</a> <small>{{ article.category }}</small></dd>
33
+      </div>
34
+    </div>
35
+    {% set prev_year = this_year %}
36
+    {% set prev_month = this_month %}
37
+    {% set prev_day = this_day %}
38
+    {% endfor %}
39
+  </section>
40
+</div>
41
+{% endblock %}
42
+

+ 28
- 0
themes/minimo/templates/article.html View File

@@ -0,0 +1,28 @@
1
+{% extends "base.html" %}
2
+
3
+{% block title %}{{ article.title|striptags }} | {{ SITENAME }}{% endblock %}
4
+{% block ogtitle %}{{ article.title|striptags }}{% endblock %}
5
+{% block ogurl %}{{ SITEURL }}/{{ article.url }}{%endblock%}
6
+{% block ogtype %}article{%endblock%}
7
+{% block canonicalurl %}{{ SITEURL }}/{{ article.url }}{%endblock%}
8
+
9
+{% block content %}
10
+
11
+<div class="span10 offset1">
12
+  <section>
13
+    <article>
14
+      <header>
15
+        <h1 class="entry-title">
16
+          <a href="{{ SITEURL }}/{{ article.url }}" rel="bookmark"
17
+             title="Permalink a {{ article.title|striptags }}">{{ article.title}}</a></h1>
18
+      </header>
19
+
20
+      <div class="entry-content">
21
+        {% include 'article_infos.html' %}
22
+        {{ article.content }}
23
+      </div>
24
+
25
+    </article>
26
+  </section>
27
+</div>
28
+{% endblock %}

+ 25
- 0
themes/minimo/templates/article_infos.html View File

@@ -0,0 +1,25 @@
1
+<footer class="post-info">
2
+  {% if article.author %}
3
+  <address class="vcard author">
4
+    <a class="url fn" href="{{ SITEURL }}/{{ article.author.url }}">{{ article.author }}</a>
5
+  </address>
6
+  {% endif %}
7
+
8
+  data: {{ article.date.strftime('%d %B %Y') }}
9
+
10
+  <br>
11
+
12
+  categoria: <a href="{{ SITEURL }}/{{ article.category.url }}">{{ article.category }}</a>
13
+
14
+  <br>
15
+
16
+  {% if article.tags %}
17
+  tag: {% for tag in article.tags %}
18
+  <a href="{{ SITEURL }}/{{ tag.url }}">{{ tag }}</a>
19
+  {% endfor %}
20
+  {% endif %}
21
+
22
+    {% import 'translations.html' as translations with context %}
23
+    {{ translations.translations_for(article) }}
24
+
25
+</footer>

+ 5
- 0
themes/minimo/templates/author.html View File

@@ -0,0 +1,5 @@
1
+{% extends "index.html" %}
2
+{% block title %}{{ SITENAME }} - {{ author }} | {{ SITENAME }}{% endblock %}
3
+{% block ogtitle %}{{ SITENAME }} - {{ author }}{% endblock %}
4
+{% block ogurl %}{{ SITEURL }}/{{ author.url }}{%endblock%}
5
+{% block canonicalurl %}{{ SITEURL }}/{{ author.url }}{%endblock%}

+ 72
- 0
themes/minimo/templates/base.html View File

@@ -0,0 +1,72 @@
1
+<!DOCTYPE html>
2
+<html lang="{{ DEFAULT_LANG }}">
3
+<head>
4
+  {% block head %}
5
+  <title>{% block title %}{{ SITENAME }}{% endblock title %}</title>
6
+  <meta charset="utf-8" />
7
+  <link rel="stylesheet" type="text/css" href="{{ SITEURL }}/theme/css/style.css" />
8
+  {% if FEED_ALL_ATOM %}
9
+  <link href="{{ FEED_DOMAIN }}/{{ FEED_ALL_ATOM }}" type="application/atom+xml" rel="alternate" title="{{ SITENAME }} Full Atom Feed" />
10
+  {% endif %}
11
+  {% if FEED_ALL_RSS %}
12
+  <link href="{{ FEED_DOMAIN }}/{{ FEED_ALL_RSS }}" type="application/rss+xml" rel="alternate" title="{{ SITENAME }} Full RSS Feed" />
13
+  {% endif %}
14
+  {% if FEED_ATOM %}
15
+  <link href="{{ FEED_DOMAIN }}/{{ FEED_ATOM }}" type="application/atom+xml" rel="alternate" title="{{ SITENAME }} Atom Feed" />
16
+  {% endif %}
17
+  {% if FEED_RSS %}
18
+  <link href="{{ FEED_DOMAIN }}/{{ FEED_RSS }}" type="application/rss+xml" rel="alternate" title="{{ SITENAME }} RSS Feed" />
19
+  {% endif %}
20
+  {% if CATEGORY_FEED_ATOM and category %}
21
+  <link href="{{ FEED_DOMAIN }}/{{ CATEGORY_FEED_ATOM|format(category.slug) }}" type="application/atom+xml" rel="alternate" title="{{ SITENAME }} Categories Atom Feed" />
22
+  {% endif %}
23
+  {% if CATEGORY_FEED_RSS and category %}
24
+  <link href="{{ FEED_DOMAIN }}/{{ CATEGORY_FEED_RSS|format(category.slug) }}" type="application/rss+xml" rel="alternate" title="{{ SITENAME }} Categories RSS Feed" />
25
+  {% endif %}
26
+  {% if TAG_FEED_ATOM and tag %}
27
+  <link href="{{ FEED_DOMAIN }}/{{ TAG_FEED_ATOM|format(tag.slug) }}" type="application/atom+xml" rel="alternate" title="{{ SITENAME }} Tags Atom Feed" />
28
+  {% endif %}
29
+  {% if TAG_FEED_RSS and tag %}
30
+  <link href="{{ FEED_DOMAIN }}/{{ TAG_FEED_RSS|format(tag.slug) }}" type="application/rss+xml" rel="alternate" title="{{ SITENAME }} Tags RSS Feed" />
31
+  {% endif %}
32
+  {% endblock head %}
33
+</head>
34
+
35
+<body id="index" class="home">
36
+  <header id="banner" class="body">
37
+    <h1><a href="{{ SITEURL }}/">{{ SITENAME }} <strong>{{ SITESUBTITLE }}</strong></a></h1>
38
+    <img src="images/logo.png" alt="logo" width="85" height="85" border="0">
39
+  </header><!-- /#banner -->
40
+  <nav id="menu"><ul>
41
+      {% for title, link in MENUITEMS %}
42
+      <li><a href="{{ link }}">{{ title }}</a></li>
43
+      {% endfor %}
44
+      {% if DISPLAY_PAGES_ON_MENU %}
45
+      {% for p in pages %}
46
+      <li{% if p == page %} class="active"{% endif %}><a href="{{ SITEURL }}/{{ p.url }}">{{ p.title }}</a></li>
47
+      {% endfor %}
48
+      {% else %}
49
+      {% if DISPLAY_CATEGORIES_ON_MENU %}
50
+      {% for cat, null in categories %}
51
+      <li{% if cat == category %} class="active"{% endif %}><a href="{{ SITEURL }}/{{ cat.url }}">{{ cat }}</a></li>
52
+      {% endfor %}
53
+      {% endif %}
54
+      {% endif %}
55
+  </ul></nav><!-- /#menu -->
56
+  {% block content %}
57
+  {% endblock %}
58
+
59
+  <footer id="contentinfo" class="body">
60
+    <hr>
61
+    <address id="about" class="vcard body">
62
+      <small>
63
+        unit hacklab 2019 - Alimentato da
64
+        <a href="http://python.org">Python</a> e
65
+        <a href="http://getpelican.com/">Pelican</a>, tema 
66
+        <a href="https://git.abbiamoundominio.org/dan/minimo">minimo</a> 
67
+      </small>
68
+    </address><!-- /#about -->
69
+  </footer><!-- /#contentinfo -->
70
+
71
+</body>
72
+</html>

+ 19
- 0
themes/minimo/templates/categories.html View File

@@ -0,0 +1,19 @@
1
+{% extends "index.html" %}
2
+{% block title %}Categorie di {{ SITENAME }}{% endblock %}
3
+{% block ogtitle %}Categorie di {{ SITENAME }}{% endblock %}
4
+{% block ogurl %}{{ SITEURL }}/categories.html{%endblock%}
5
+{% block canonicalurl %}{{ SITEURL }}/categories.html{%endblock%}
6
+
7
+{% block content %}
8
+<div class="span9">
9
+  <section>
10
+    <h1>{% block content_title %}Categorie {% endblock %}</h1>
11
+
12
+    <dl>
13
+      {% for category, articles in categories %}
14
+      <dd><a href="{{ SITEURL }}/{{ category.url }}">{{ category }} ({{ articles|count }})</a></dd>
15
+      {% endfor %}
16
+    </dl>
17
+  </section>
18
+</div>
19
+{% endblock %}

+ 6
- 0
themes/minimo/templates/category.html View File

@@ -0,0 +1,6 @@
1
+{% extends "archives.html" %}
2
+{% block title %}{{ SITENAME }} - {{ category }}{% endblock %}
3
+{% block content_title %} Ricerca per categoria: {{ category }}{% endblock %}
4
+{% block ogtitle %}{{ SITENAME }} - {{ category }}{% endblock %}
5
+{% block ogurl %}{{ SITEURL }}/{{ category.url }}{%endblock%}
6
+{% block canonicalurl %}{{ SITEURL }}/{{ category.url }}{%endblock%}

+ 74
- 0
themes/minimo/templates/index.html View File

@@ -0,0 +1,74 @@
1
+{% extends "base.html" %}
2
+{% block content_title %}{% endblock %}
3
+{% block ogtitle %}{{ SITENAME }}{% endblock %}
4
+{% block ogurl %}{{ SITEURL }}{%endblock%}
5
+{% block canonicalurl %}{{ SITEURL }}{%endblock%}
6
+
7
+{% block content %}
8
+<div class="span9">
9
+  {% if articles %}
10
+  {% for article in articles_page.object_list %}
11
+  {% if loop.length > 0 %}
12
+  {% if loop.first %}
13
+  <section>
14
+    <ol id="posts-list" class="hfeed" start="{{ articles_paginator.per_page -1 }}">
15
+      {% endif %}
16
+      <article>
17
+        <header>
18
+          <h1 class="entry-title">
19
+            <a href="{{ SITEURL }}/{{ article.url }}" rel="bookmark" title="Permalink: {{ article.title|striptags }}">
20
+              {{ article.title }}
21
+            </a>
22
+          </h1>
23
+        </header>
24
+        <div class="entry-content">
25
+          {% include 'article_infos.html' %}
26
+          {{ article.summary }}
27
+          <p class="readmore">
28
+            <a class="btn btn-small btn-info" href="{{ SITEURL }}/{{ article.url }}">continua..</a>
29
+          </p>
30
+        </div>
31
+        <hr/>
32
+      </article>
33
+      {% if loop.last %}
34
+    </ol><!-- /#posts-list -->
35
+    {% if loop.last and (articles_page.has_previous()
36
+    or not articles_page.has_previous() and loop.length > 1) %}
37
+    {% include 'pagination.html' %}
38
+    {% endif %}
39
+  </section><!-- /#content -->
40
+  {% endif %}
41
+  {% endif %}
42
+  {% endfor %}
43
+  {% else %}
44
+  <section>
45
+    <h2>Pages</h2>
46
+    {% for page in PAGES %}
47
+    <li><a href="{{ SITEURL }}/{{ page.url }}">{{ page.title }}</a></li>
48
+    {% endfor %}
49
+  </section>
50
+  {% endif %}
51
+</div>
52
+{% endblock content %}
53
+
54
+{% if LINKS %}
55
+<div>
56
+  <h2>Links</h2>
57
+  <ul>
58
+    {% for name, link in LINKS %}
59
+    <li><a href="{{ link }}">{{ name }}</a></li>
60
+    {% endfor %}
61
+  </ul>
62
+</div><!-- /.Links -->
63
+{% endif %}
64
+{% if TAG_CLOUD_STEPS %}
65
+<div>
66
+  <h2>Tags</h2>
67
+  <ul id="cloud">
68
+    {% for tag in tag_cloud %}
69
+    <li class="tag-{{ tag.1 }}"><a href="{{ SITEURL }}/{{ tag.0.url }}">{{ tag.0 }}</a></li>
70
+    {% endfor %}
71
+  </ul>
72
+</div>
73
+{% endif %}<!-- /.Tags -->
74
+</div>

+ 15
- 0
themes/minimo/templates/page.html View File

@@ -0,0 +1,15 @@
1
+{% extends "base.html" %}
2
+{% block title %}{{ page.title }} | {{ SITENAME }}{% endblock %}
3
+{% block ogtitle %}{{ page.title|striptags }}{% endblock %}
4
+{% block ogurl %}{{ SITEURL }}/{{ page.url }}{%endblock%}%}
5
+{% block canonicalurl %}{{ SITEURL }}/{{ page.url }}{%endblock%}
6
+
7
+{% block content %}        
8
+<section  >    
9
+    <h1 class="entry-title">{{ page.title }}</h1>
10
+    {% import 'translations.html' as translations with context %}
11
+    {{ translations.translations_for(page) }}
12
+    {{ page.content }}
13
+</section>
14
+{% endblock %}
15
+

+ 6
- 0
themes/minimo/templates/tag.html View File

@@ -0,0 +1,6 @@
1
+{% extends "archives.html" %}
2
+{% block title %}{{ SITENAME }} - {{ tag }} | {{ SITENAME }}{% endblock %}
3
+{% block content_title %}Ricerca per tag: "{{ tag }}"{% endblock %}
4
+{% block ogtitle %}{{ SITENAME }} - {{ tag }}{% endblock %}
5
+{% block ogurl %}{{ SITEURL }}/{{ tag.url }}{%endblock%}
6
+{% block canonicalurl %}{{ SITEURL }}/{{ tag.url }}{%endblock%}

+ 19
- 0
themes/minimo/templates/tags.html View File

@@ -0,0 +1,19 @@
1
+{% extends "index.html" %}
2
+{% block title %}Tags in {{ SITENAME }}{% endblock %}
3
+{% block ogtitle %}Tags in {{ SITENAME }}{% endblock %}
4
+{% block ogurl %}{{ SITEURL }}/tags.html{%endblock%}%}
5
+{% block canonicalurl %}{{ SITEURL }}/tags.html{%endblock%}
6
+
7
+{% block content %}
8
+<div class="span9">
9
+  <section>
10
+    <h1>{% block content_title %}Tags{% endblock %}</h1>
11
+
12
+    <dl>
13
+      {% for tag, articles in tags|sort %}
14
+      <dd><a href="{{ SITEURL }}/{{ tag.url }}">{{ tag }} ({{ articles|count }})</a></dd>
15
+      {% endfor %}
16
+    </dl>
17
+  </section>
18
+</div>
19
+{% endblock %}

+ 10
- 0
themes/minimo/templates/translations.html View File

@@ -0,0 +1,10 @@
1
+{% macro translations_for(article) %}
2
+{% if article.translations %}
3
+<br>
4
+Translations: 
5
+    {% for translation in article.translations %}
6
+        <a href="{{ SITEURL }}/{{ translation.url }}">{{ translation.lang }}</a>
7
+    {% endfor %}
8
+{% endif %}
9
+{% endmacro %}
10
+

Loading…
Cancel
Save