prima versione del sito in pelican
This commit is contained in:
commit
ceacdb8ccf
5
.gitignore
vendored
Normal file
5
.gitignore
vendored
Normal file
|
@ -0,0 +1,5 @@
|
|||
__pycache__/
|
||||
cache/
|
||||
output/
|
||||
*.pyc
|
||||
pelican.pid
|
87
LEGGIMI.md
Normal file
87
LEGGIMI.md
Normal file
|
@ -0,0 +1,87 @@
|
|||
# PELICAN WEBSITE HOWTO
|
||||
|
||||
## pelicanconf.py:
|
||||
|
||||
in questo file si definiscono un tot di cose, tra cui:
|
||||
|
||||
i contenuti stanno nella cartella "content", vengono scritti in markdown e sono di due tipi:
|
||||
|
||||
- pagine statiche (nella sottocartella "pages")
|
||||
- articoli tipo blog (nella sottocartella "blog")
|
||||
|
||||
una volta elaborati sono salvati nella cartella "output" che e' quella
|
||||
che conterrà i files .html del sito vero e proprio
|
||||
|
||||
in testa ai files .md devono essere definiti dei metadati:
|
||||
|
||||
per le pagine statiche:
|
||||
|
||||
- Title (il titolo che poi compare a video nella pagina finale html)
|
||||
- Slug (il nome con cui la pagina sara' salvata nella cartella output)
|
||||
|
||||
per gli articoli ad es.:
|
||||
|
||||
- Title: Comunicato Unit hacklab su annuncio sgombero Macao
|
||||
- Author: Unit
|
||||
- Category: comunicato
|
||||
- Date: 2018-09-26
|
||||
- Tags: sgombero
|
||||
|
||||
nella cartella output le pagine sono salvate nella sottocartella pages
|
||||
(direttiva PAGE_SAVE_AS)
|
||||
e gli articoli nella cartella blog (direttiva ARTICLE_SAVE_AS)
|
||||
|
||||
gli articoli finiscono nel feed rss, le pagine no, quindi se si crea una pagina
|
||||
e' bene fare anche un articolo che la "presenti".
|
||||
|
||||
|
||||
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))
|
||||
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,
|
||||
e non sotto
|
||||
(per come fare vedi ad es.
|
||||
> https://github.com/sQu4rks/crowsfoot/blob/30509fc0cf6d4c29f2d1d9ec87783340a7158538/templates/base.html
|
||||
> https://github.com/nairobilug/pelican-alchemy/blob/f235c81bf323e6134b01915fc9a46b5e89ac238b/alchemy/templates/base.html
|
||||
|
||||
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)
|
||||
c'e' anche altro intorno, andrebbe sistemato.
|
||||
|
||||
|
||||
in cima alla pagina c'e' un piccolo menu con poche voci:
|
||||
|
||||
- HOME (index)
|
||||
- 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.
|
||||
- CATEGORIE (lista delle categorie degli articoli, cliccabile)
|
||||
- TAG (lista dei tag degli articoli, cliccabile)
|
||||
- CONTATTI (pagina che riporta i contatti)
|
||||
- RSS (link al feed rss (atom))
|
||||
|
||||
ci sono due cartelle statiche:
|
||||
|
||||
- media (che contiene i materiali delle pagine, pdf, immagini etc.)
|
||||
- images (che contiene le immagini della struttura del sito, al momento solo il logo))
|
||||
|
||||
|
||||
|
||||
## publishconf.py
|
||||
|
||||
questo file definisce solo il SITEURL in produzione e l'indirizzo dei feed rss e atom creati
|
||||
(quando sostituiremo il sito perderemo tutti i feed precedenti, a meno di creare degli articoli nel blog,
|
||||
pero' poi mi sa che chi ha sottoscritto il feed li ricevera' di nuovo.... ?
|
||||
per or
|
||||
|
||||
|
||||
## Makefile
|
||||
|
||||
e' il makefile standard con le istruzioni per SSH per caricare il sito
|
||||
e un nuovo comando "production" per copiare il sito al suo posto
|
||||
(ma funziona solo se viene lanciato da zaphoda)
|
||||
|
||||
|
||||
TODO:
|
||||
il sito ora e' visibile su https://unit.abbiamoundominio.org/tmp/,
|
||||
visto che sta in una sottocartella, in produzione per i menuitems andra' aggiunto un / prima di ogni pagina
|
||||
stessa cosa per il tema, e l'immagine del logo dovra' avere uno / prima del path
|
||||
(questo perche' senno' se sei nella cartella /categories/qualcosa poi non funzionano piu' i link, se sono relativi)
|
||||
|
||||
valutare magari di mettere una pagina 404 (o meglio ancora 40x) da configurare in nginx.
|
||||
|
92
Makefile
Normal file
92
Makefile
Normal file
|
@ -0,0 +1,92 @@
|
|||
PY?=python3
|
||||
PELICAN?=pelican
|
||||
PELICANOPTS=
|
||||
|
||||
BASEDIR=$(CURDIR)
|
||||
INPUTDIR=$(BASEDIR)/content
|
||||
OUTPUTDIR=$(BASEDIR)/output
|
||||
CONFFILE=$(BASEDIR)/pelicanconf.py
|
||||
PUBLISHCONF=$(BASEDIR)/publishconf.py
|
||||
|
||||
SSH_HOST=abbiamoundominio.org
|
||||
SSH_PORT=22
|
||||
SSH_USER=${USER}
|
||||
SSH_TARGET_DIR=/var/www/unit.abbiamoundominio.org/tmp/
|
||||
|
||||
DEBUG ?= 0
|
||||
ifeq ($(DEBUG), 1)
|
||||
PELICANOPTS += -D
|
||||
endif
|
||||
|
||||
RELATIVE ?= 0
|
||||
ifeq ($(RELATIVE), 1)
|
||||
PELICANOPTS += --relative-urls
|
||||
endif
|
||||
|
||||
help:
|
||||
@echo 'Makefile for a pelican Web site '
|
||||
@echo ' '
|
||||
@echo 'Usage: '
|
||||
@echo ' make html (re)generate the web site '
|
||||
@echo ' make clean remove the generated files '
|
||||
@echo ' make regenerate regenerate files upon modification '
|
||||
@echo ' make publish generate using production settings '
|
||||
@echo ' make serve [PORT=8000] serve site at http://localhost:8000'
|
||||
@echo ' make serve-global [SERVER=0.0.0.0] serve (as root) to $(SERVER):80 '
|
||||
@echo ' make devserver [PORT=8000] serve and regenerate together '
|
||||
@echo ' make ssh_upload upload the web site via SSH '
|
||||
@echo ' make rsync_upload upload the web site via rsync+ssh '
|
||||
@echo ' make production copy the site locally '
|
||||
@echo ' '
|
||||
@echo 'Set the DEBUG variable to 1 to enable debugging, e.g. make DEBUG=1 html '
|
||||
@echo 'Set the RELATIVE variable to 1 to enable relative urls '
|
||||
@echo ' '
|
||||
|
||||
html:
|
||||
$(PELICAN) $(INPUTDIR) -o $(OUTPUTDIR) -s $(CONFFILE) $(PELICANOPTS)
|
||||
|
||||
clean:
|
||||
[ ! -d $(OUTPUTDIR) ] || rm -rf $(OUTPUTDIR)
|
||||
|
||||
regenerate:
|
||||
$(PELICAN) -r $(INPUTDIR) -o $(OUTPUTDIR) -s $(CONFFILE) $(PELICANOPTS)
|
||||
|
||||
serve:
|
||||
ifdef PORT
|
||||
$(PELICAN) -l $(INPUTDIR) -o $(OUTPUTDIR) -s $(CONFFILE) $(PELICANOPTS) -p $(PORT)
|
||||
else
|
||||
$(PELICAN) -l $(INPUTDIR) -o $(OUTPUTDIR) -s $(CONFFILE) $(PELICANOPTS)
|
||||
endif
|
||||
|
||||
serve-global:
|
||||
ifdef SERVER
|
||||
$(PELICAN) -l $(INPUTDIR) -o $(OUTPUTDIR) -s $(CONFFILE) $(PELICANOPTS) -p $(PORT) -b $(SERVER)
|
||||
else
|
||||
$(PELICAN) -l $(INPUTDIR) -o $(OUTPUTDIR) -s $(CONFFILE) $(PELICANOPTS) -p $(PORT) -b 0.0.0.0
|
||||
endif
|
||||
|
||||
|
||||
devserver:
|
||||
ifdef PORT
|
||||
$(PELICAN) -lr $(INPUTDIR) -o $(OUTPUTDIR) -s $(CONFFILE) $(PELICANOPTS) -p $(PORT)
|
||||
else
|
||||
$(PELICAN) -lr $(INPUTDIR) -o $(OUTPUTDIR) -s $(CONFFILE) $(PELICANOPTS)
|
||||
endif
|
||||
|
||||
publish:
|
||||
$(PELICAN) $(INPUTDIR) -o $(OUTPUTDIR) -s $(PUBLISHCONF) $(PELICANOPTS)
|
||||
|
||||
ssh_upload: publish
|
||||
scp -P $(SSH_PORT) -r $(OUTPUTDIR)/* $(SSH_USER)@$(SSH_HOST):$(SSH_TARGET_DIR)
|
||||
|
||||
rsync_upload: publish
|
||||
rsync -e "ssh -p $(SSH_PORT)" -P -rvzc --cvs-exclude --delete $(OUTPUTDIR)/ $(SSH_USER)@$(SSH_HOST):$(SSH_TARGET_DIR)
|
||||
|
||||
production: publish
|
||||
ifeq "$(HOSTNAME)" "zaphoda"
|
||||
cp -R $(OUTPUTDIR)/* $(SSH_TARGET_DIR)/
|
||||
else
|
||||
echo "devi essere su zaphoda per lanciare questo comando"
|
||||
endif
|
||||
|
||||
.PHONY: html help clean regenerate serve serve-global devserver stopserver publish ssh_upload rsync_upload
|
BIN
content/images/logo.png
Normal file
BIN
content/images/logo.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 26 KiB |
BIN
content/media/c2c-screenshot-mobile.jpg
Normal file
BIN
content/media/c2c-screenshot-mobile.jpg
Normal file
Binary file not shown.
After Width: | Height: | Size: 35 KiB |
BIN
content/media/nolike.pdf
Normal file
BIN
content/media/nolike.pdf
Normal file
Binary file not shown.
BIN
content/media/pmomp-flyer.png
Normal file
BIN
content/media/pmomp-flyer.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 172 KiB |
43
content/news/001-comunicato_sgombero.md
Normal file
43
content/news/001-comunicato_sgombero.md
Normal file
|
@ -0,0 +1,43 @@
|
|||
Title: Comunicato Unit hacklab su annuncio sgombero Macao
|
||||
Category: comunicato
|
||||
Date: 2018-09-26
|
||||
Tags: sgombero
|
||||
|
||||
Contesto: Milano 2018. Atmosfera di intolleranza civile.
|
||||
|
||||
Unit hacklab e' un laboratorio autogestito di
|
||||
sperimentazione tecnica e politica, le nostre attivita'
|
||||
comprendono dai corsi gratuiti di elettronica e
|
||||
informatica alla divulgazione delle pratiche di gestione
|
||||
della privacy sotto forma di incontri e convegni.
|
||||
|
||||
il Comune di Milano, zelante, anticipa l'editto di
|
||||
Matteo Salvini e comunica il prossimo sgombero di Macao,
|
||||
lo spazio culturale eterogeneo dal respiro
|
||||
internazionale situato in Viale Molise 68 a Milano nella
|
||||
palazzina inutilizzata della Borsa della carne, liberato
|
||||
nel 2012, al cui interno dal 2016 ci siamo anche noi di
|
||||
Unit hacklab.
|
||||
|
||||
Lo sgombero e' funzionale alla vendita delle palazzine
|
||||
di Viale Molise e viene annunciato accusando problemi di
|
||||
bilancio mentre in realta' il Comune sta parlando di
|
||||
trasferire Citta' studi, di riaprire i navigli e
|
||||
addirittura di fare le olimpiadi invernali. I soldi non
|
||||
sono il problema. Il problema e' politico, rispetto
|
||||
all'autogestione. Ricordiamo che i luoghi liberati
|
||||
dall'inutilizzo e autogestiti, non sono riconducibili
|
||||
solo a spazi di aggregazione per i giovani. Sono luoghi
|
||||
di sperimentazione e produzione politica e culturale,
|
||||
naturalmente liberi dalle dinamiche commerciali e a
|
||||
pensiero unico che caratterizzano gli spazi offerti
|
||||
dalle autorita'.
|
||||
|
||||
Il Comune di Milano ha proposto uno sgombero "soft",
|
||||
ricambiamo con un anatema commisurato: Possa il vostro
|
||||
winzozz computer farvi BEEP, e non potete uscire.
|
||||
|
||||
Noi di Unit hacklab, per nostra natura, non sappiamo
|
||||
come sparire cosi' facilmente.
|
||||
|
||||
eof
|
9
content/news/002-welcome_pelican.md
Normal file
9
content/news/002-welcome_pelican.md
Normal file
|
@ -0,0 +1,9 @@
|
|||
Title: Benvenuto pellicano
|
||||
Category: news
|
||||
Date: 2019-03-22
|
||||
Tags: pelican
|
||||
|
||||
Il sito e' stato convertito a pelican, un software
|
||||
per generare siti statici in html.
|
||||
|
||||
|
13
content/pages/c2c.md
Normal file
13
content/pages/c2c.md
Normal file
|
@ -0,0 +1,13 @@
|
|||
Title: Cheeck2Cheeck
|
||||
Slug: c2c
|
||||
|
||||
|
||||
La scatoletta con wifi sconnesso da internet collega le persone vicine per fare chat e
|
||||
condivisione documenti.
|
||||
c2c e' un social network libero, mobile ed estemporaneo che non ha bisogno di registrazione.
|
||||
Ispirato dalle radio pirata e dal movimento della cultura libera, cheek2cheek e'
|
||||
un'implementazione di Unit hacklab della [PirateBOX](https://www.piratebox.cc/faq).
|
||||
|
||||
|
||||
![c2c screenshot mobile](media/c2c-screenshot-mobile.jpg)
|
||||
|
8
content/pages/contatti.md
Normal file
8
content/pages/contatti.md
Normal file
|
@ -0,0 +1,8 @@
|
|||
Title: contatti
|
||||
Slug: contatti
|
||||
|
||||
puoi scriverci all'indirizzo mail: _unit at paranoici dot org_
|
||||
|
||||
ci trovi su IRC nel canale _#unit_ del server <a href="https://www.autistici.org/docs/irc/">irc.autistici.org</a>
|
||||
|
||||
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
content/pages/criptolibretto.md
Normal file
31
content/pages/criptolibretto.md
Normal file
|
@ -0,0 +1,31 @@
|
|||
Title: Criptolibretto
|
||||
Slug: criptolibretto
|
||||
|
||||
|
||||
Un criptolibretto in puro testo con formattazione markdown, convertibile in PDF via pandoc
|
||||
e stampabile in formato pieghevole. Con documentazione.
|
||||
|
||||
Il criptolibretto e' in continuo divenire, qui si trova la piu' recente versione approvata,
|
||||
nel formato pieghevole croccante stampabile A5 e nel classico formato A4. Per la versione unstable, seguire il git.
|
||||
|
||||
|
||||
|
||||
[Criptolibretto pieghevole Pdf da stampa](https://unit.abbiamoundominio.org/criptolibretto/book-a5-signature.pdf)
|
||||
|
||||
24 gennaio 2019
|
||||
|
||||
SHA256(book-a5-signature.pdf)= 5c3b861708e05d9adac0fcbaab2771bec718239a043883556bdf63e158e5be10
|
||||
|
||||
|
||||
[Criptolibretto Pdf](https://unit.abbiamoundominio.org/criptolibretto/book-a4.pdf)
|
||||
|
||||
24 gennaio 2019
|
||||
|
||||
SHA256(book-a4.pdf)= 84c059584de8bc98628ce22de0eb57af7d49afa692df974795f551c02ab42549
|
||||
|
||||
|
||||
Sorgente disponibile al [repositorio git](https://git.abbiamoundominio.org/unit/criptolibretto)
|
||||
|
||||
|
||||
|
||||
|
67
content/pages/faq.md
Normal file
67
content/pages/faq.md
Normal file
|
@ -0,0 +1,67 @@
|
|||
Title: FAQ
|
||||
Slug: faq
|
||||
|
||||
|
||||
|
||||
Questa e' la nostra pagina delle F.A.Q.
|
||||
le Frequented Asked Questions, le Domande Poste di Frequente.
|
||||
|
||||
== Cosa e' Unit? ==
|
||||
|
||||
E' un hacklab.
|
||||
|
||||
== Perche' il nome Unit? ==
|
||||
|
||||
E' il nome della tupla vuota di haskell.
|
||||
|
||||
[https://en.wikipedia.org/wiki/Tuple](https://en.wikipedia.org/wiki/Tuple)
|
||||
|
||||
[https://en.wikipedia.org/wiki/Haskell_(programming_language)](https://en.wikipedia.org/wiki/Haskell_(programming_language))
|
||||
|
||||
Qui trovi delucidazioni sul logo.
|
||||
|
||||
[http://stackoverflow.com/questions/16892570/what-is-in-haskell-exactly](http://stackoverflow.com/questions/16892570/what-is-in-haskell-exactly)
|
||||
|
||||
== Cos'e' un hackerspace? ==
|
||||
|
||||
Guarda il video: hackerspace design patterns by Mitch
|
||||
|
||||
[https://www.youtube.com/watch?v=zr76In2h0fE](https://www.youtube.com/watch?v=zr76In2h0fE)
|
||||
|
||||
Piu' sul come che sul cosa, qui ci sono delle slide.
|
||||
|
||||
[https://wiki.hackerspaces.org/images/8/8e/Hacker-Space-Design-Patterns.pdf](https://wiki.hackerspaces.org/images/8/8e/Hacker-Space-Design-Patterns.pdf)
|
||||
|
||||
== Cos'e' un hacklab? ==
|
||||
|
||||
Un hackerspace in movimento.
|
||||
|
||||
Unit hacklab e' un laboratorio autogestito di sperimentazione tecnica
|
||||
e politica, le nostre attivita' comprendono corsi gratuiti di
|
||||
elettronica e informatica e divulgazione delle pratiche di gestione
|
||||
della privacy sotto forma di incontri e convegni. Ci occupiamo non
|
||||
solo di tecnica, ma anche di politica in quanto la tecnologia non e'
|
||||
neutra.
|
||||
|
||||
== Chi e' un hacker? ==
|
||||
|
||||
Colei, colui o colacaso che gode dello spirito dell'intelligenza giocosa.
|
||||
|
||||
== Come posso incontrarvi? ==
|
||||
|
||||
Chiedi a chi ti ha mandato a questo sito di accompagnarti al prossimo
|
||||
incontro.
|
||||
|
||||
== Come posso contattarvi? ==
|
||||
|
||||
Puoi mandarci una mail a unit [at] paranoici [dot] org o join sul
|
||||
network IRC Autistici/Inventati il canale #unit.
|
||||
|
||||
== Non voglio incontrarvi, voglio solo delle risorse su che software usare ==
|
||||
|
||||
Ne trovi qui:
|
||||
|
||||
[https://prism-break.org/it/](https://prism-break.org/it/)
|
||||
|
||||
|
||||
|
93
content/pages/howto_mailinglist.md
Normal file
93
content/pages/howto_mailinglist.md
Normal file
|
@ -0,0 +1,93 @@
|
|||
Title: Linee guida mailing list
|
||||
Slug: howto_mailinglist
|
||||
|
||||
|
||||
|
||||
# Linee guida: Mailing list
|
||||
|
||||
## Non usare HTML
|
||||
|
||||
Il testo semplice è buono. Tutti lo leggono, sempre, con piacere.
|
||||
|
||||
Meglio scrivere in formato testo semplice. Alcuni programmi di default compongono le email in HTML.
|
||||
Frugare tra le impostazioni ci permetterà di impostare la modalità testo semplice.
|
||||
|
||||
Nota che l'HTML viene inviato nelle email sotto forma di allegato, ma non è la email.
|
||||
|
||||
## Non mandare allegati enormi
|
||||
|
||||
L'allegato mandato per e-mail viene copiato per ogni iscritto alla lista, intasando il provider,
|
||||
e ci si tiene a non intasarlo, specie se è autogestito.
|
||||
|
||||
Inoltre potrebbe generare acidità in chi avesse una connessione che paga a consumo.
|
||||
|
||||
Per evitare di mandare allegati pesanti in lista è bene usare un servizio esterno e mandare il link nella mail.
|
||||
|
||||
Unit ha un servizio di storage cloud e dovresti sapere come accedere. Altrimenti dovresti chiederlo in mailing list.
|
||||
|
||||
## Oggetto delle e-mail
|
||||
|
||||
Usa un oggetto sensato, che predica il contenuto della mail.
|
||||
|
||||
Serve a farsi leggere e anche a ritrovare la mail in futuro.
|
||||
|
||||
Esempio bene - Subject: i miei 2c sulla questione manifesto
|
||||
|
||||
Esempio male - Subject: ciao
|
||||
|
||||
## Porta rispetto per il thread
|
||||
|
||||
Quando rispondi a una mail, attieniti all'oggetto.
|
||||
|
||||
In questo modo si può seguire il filo del discorso (che chiamiamo thread) e nessuno ti accuserà mai di
|
||||
fare thread-hijacking, cioè di mischiare argomenti.
|
||||
|
||||
Se si devono dire cose nuove e non inerenti a un thread, meglio mandare una mail nuova con un subject nuovo.
|
||||
|
||||
Diventa così facile cercare tra le vecchie discussioni.
|
||||
|
||||
Nota che non basta cancellare un subject e scriverne un altro al suo posto per creare un nuovo thread,
|
||||
per creare un nuovo thread devi mandare una nuova mail alla lista. Se rispondi a un thread già esistente,
|
||||
pure che cambi il subject, resta lo stesso thread.
|
||||
|
||||
## Quotare
|
||||
|
||||
Quotare significa riportare parti della e-mail a cui stai rispondendo in modo da dare maggiore contesto alla tua risposta.
|
||||
|
||||
Una riga quotata è preceduta dal simbolo di maggiore: >.
|
||||
|
||||
> appuntamento mercoledì sera alle 8
|
||||
Ci sono, ma arriverò alle 21
|
||||
|
||||
Quota soltanto ciò che serve. Non quotare intere e-mail per rispondere soltanto: "Ok".
|
||||
|
||||
(A meno che non rispondi a una mail formattata con indici nel qual caso considera di lasciare anche un riferimento agli argomenti,
|
||||
che pure non citi, ma non cancelli per gli altri dal thread.)
|
||||
|
||||
Il contenuto della mail a cui si risponde (il quote) si quota sopra (e non sotto) la tua risposta.
|
||||
|
||||
## Evitare il top-posting
|
||||
|
||||
Risposta: Perché confonde l'ordine con il quale si legge il testo
|
||||
Domanda: Perché il Top-posting non si fa?
|
||||
Risposta: Il Top-Posting
|
||||
Domanda: Qual'è la cosa più noiosa delle email?
|
||||
|
||||
Top-posting significa scrivere sopra il quote. Ottiene l'effetto indesiderato di invertire la cronologia del discorso
|
||||
e rende difficile continuare la discussione.
|
||||
|
||||
Esempio in top-posting:
|
||||
|
||||
io certo che vengo, ci vediamo davanti. Olivia
|
||||
> io non ce la faccio proprio. Minnie
|
||||
>> ciao, stasera venite a ballare al Calypso? Popeye
|
||||
|
||||
Esempio in down-posting:
|
||||
|
||||
>> ciao, stasera venite a ballare al Calypso? Popeye
|
||||
> io non ce la faccio proprio. Minnie
|
||||
io certo che vengo, ci vediamo davanti. Olivia
|
||||
|
||||
* * *
|
||||
|
||||
_[Unit hacklab](http://unit.abbiamoundominio.org), 4 ottobre 2016_
|
22
content/pages/index.md
Normal file
22
content/pages/index.md
Normal file
|
@ -0,0 +1,22 @@
|
|||
Title: unit state of mind
|
||||
Slug: index
|
||||
|
||||
[manifesto](manifesto.html) | [faq](faq.html) | [newsletter](https://noise.autistici.org/mailman/listinfo/unit-news)
|
||||
|
||||
[wiki](https://wiki.unit.abbiamoundominio.org/) | [git](https://git.abbiamoundominio.org/)
|
||||
|
||||
[pmomp](pmomp.html) | [criptolibretto](criptolibretto.html) | [cheek2cheek](c2c.html) | [lost](http://lost.abbiamoundominio.org/)
|
||||
|
||||
[comunicati](comunicati/index.html) | [nolike](nolike.html)
|
||||
|
||||
|
||||
* * *
|
||||
|
||||
|
||||
mercoledi pomeriggio: [laboratorio di elettronica](https://wiki.unit.abbiamoundominio.org/LaboratorioElettronica)
|
||||
|
||||
venerdi sera: [free hacking friday](https://wiki.unit.abbiamoundominio.org/FHF)
|
||||
|
||||
_Se hai pensato che c'era un modo migliore, avevi ragione._
|
||||
|
||||
|
52
content/pages/manifesto.md
Normal file
52
content/pages/manifesto.md
Normal file
|
@ -0,0 +1,52 @@
|
|||
Title: Manifesto
|
||||
Slug: manifesto
|
||||
|
||||
|
||||
=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
|
||||
|
||||
__ _ _ _ _ __
|
||||
/ _| | | | |_____|_| |_ |_ \
|
||||
| | | | | | _ | | _| | |
|
||||
| |_ | |_| | | | | | |_ _| |
|
||||
\__| |_____|_| |_|_|___| |__/
|
||||
| manifesto |
|
||||
|
||||
|
||||
----[ 1 ]----------------------------------------------------------------------
|
||||
|
||||
Noi unitariani veniamo relativamente in pace.
|
||||
Siamo multigenere e multiforma.
|
||||
Condividiamo l'idea di condividere la condivisione con di voi.
|
||||
|
||||
----[ 1.1 ]--------------------------------------------------------------------
|
||||
|
||||
Pensiamo che la tecnologia non sia neutra, che Internet possa diventare anche
|
||||
un formidabile strumento di oppressione, che l'informazione e il software
|
||||
debbano essere liberi, e che le conoscenze non siano merce, che il codice sia
|
||||
l'espressione poetica dei misconosciuti legislatori del mondo e che legale non
|
||||
significhi giusto.
|
||||
|
||||
Siamo antifascisti, antisessisti e antirazzisti.
|
||||
|
||||
Vogliamo creare spazi liberi da gerarchie e discriminazioni dove studiare e
|
||||
divulgare quello che ci piace.
|
||||
|
||||
Siamo mossi dal desiderio, non crediamo ai confini.
|
||||
|
||||
Ci aggreghiamo per affinita', prendiamo decisioni con il metodo del consenso,
|
||||
il nostro spazio e' una Zona Autonoma, condivideremo saperi senza fondare poteri.
|
||||
|
||||
----[ 1.2 ]--------------------------------------------------------------------
|
||||
|
||||
Noi abbiamo sempre nutrito il sogno di una cosa,
|
||||
ma oggi abbiamo scelto di diventare coscienti.
|
||||
|
||||
Non vogliamo tutto e subito e non abbiamo fretta,
|
||||
ma aspettiamo una risposta per domani mattina.
|
||||
|
||||
----[ 2 - Domande ]------------------------------------------------------------
|
||||
|
||||
Hai delle domande? E noi abbiamo delle FAQ:
|
||||
http://unit.abbiamoundominio.org/faq.html
|
||||
|
||||
=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
|
127
content/pages/nolike.md
Normal file
127
content/pages/nolike.md
Normal file
File diff suppressed because one or more lines are too long
20
content/pages/pmomp.md
Normal file
20
content/pages/pmomp.md
Normal file
|
@ -0,0 +1,20 @@
|
|||
Title: Privacy Matters On My Phone
|
||||
Slug: pmomp
|
||||
Category: pmomp
|
||||
Tags: pmomp
|
||||
|
||||
**Percorso in cinque passi per entrare in possesso del proprio smartphone dopo averlo comperato.**
|
||||
|
||||
L'obiettivo di questo progetto e' di raccogliere e divulgare strumenti e conoscenze per utilizzare
|
||||
uno smartphone Android senza cedere la propria privacy. Il progetto e' strutturato in cinque livelli,
|
||||
dal piu' facile fino al livello piu' radicale senza compromessi.
|
||||
Vogliamo rompere la sacralita' nell'utilizzo dello smartphone, il telefono intelligente (detto anche furbo)
|
||||
e' un computer con il quale abbiamo un rapporto di intimita' e sul quale si possono e si devono mettere sopra le mani.
|
||||
Si deve poter essere liberi sul proprio dispositivo.
|
||||
|
||||
Per il sorgente del libretto e slide, seguire il [git](https://git.abbiamoundominio.org/unit/pmomp)
|
||||
|
||||
|
||||
![pmomp flyer](media/pmomp-flyer.png)
|
||||
|
||||
[Audio podcast](https://lost.abbiamoundominio.org/2019/03/privacy-matters-on-my-phone-2/)
|
75
pelicanconf.py
Normal file
75
pelicanconf.py
Normal file
|
@ -0,0 +1,75 @@
|
|||
#!/usr/bin/env python
|
||||
# -*- coding: utf-8 -*- #
|
||||
from __future__ import unicode_literals
|
||||
|
||||
AUTHOR = u'Unit'
|
||||
SITENAME = u'unit'
|
||||
# SITEURL = 'https://unit.abbiamoundominio.org'
|
||||
SITEURL = ''
|
||||
|
||||
# SITESUBTITLE = ''
|
||||
|
||||
PATH = 'content'
|
||||
PAGE_PATHS = ['pages']
|
||||
ARTICLE_PATHS = ['blog']
|
||||
STATIC_PATHS = ['images', 'media']
|
||||
|
||||
TIMEZONE = 'Europe/Rome'
|
||||
|
||||
DEFAULT_LANG = u'it'
|
||||
|
||||
DEFAULT_PAGINATION = 3
|
||||
DEFAULT_DATE = 'fs'
|
||||
DEFAULT_DATE_FORMAT = '%d %B %Y'
|
||||
|
||||
RSS_FEED_SUMMARY_ONLY = True
|
||||
|
||||
# Feed generation is usually not desired when developing
|
||||
FEED_ALL_ATOM = None
|
||||
FEED_ALL_RSS = None
|
||||
CATEGORY_FEED_ATOM = None
|
||||
TRANSLATION_FEED_ATOM = None
|
||||
AUTHOR_FEED_ATOM = None
|
||||
AUTHOR_FEED_RSS = None
|
||||
|
||||
LINKS = None
|
||||
SOCIAL = None
|
||||
|
||||
DEFAULT_PAGINATION = False
|
||||
|
||||
DEFAULT_METADATA = {'unit hacklab': 'This is a Game Planet'}
|
||||
|
||||
# Uncomment following line if you want document-relative URLs when developing
|
||||
# RELATIVE_URLS = True
|
||||
|
||||
MARKDOWN = {
|
||||
'extension_configs': {
|
||||
'markdown.extensions.codehilite': {'css_class': 'highlight'},
|
||||
'markdown.extensions.extra': {},
|
||||
'markdown.extensions.meta': {},
|
||||
},
|
||||
'output_format': 'html5',
|
||||
}
|
||||
|
||||
WITH_FUTURE_DATES = False
|
||||
|
||||
THEME = 'themes/minimo'
|
||||
|
||||
PAGE_URL = '{slug}.html'
|
||||
PAGE_SAVE_AS = '{slug}.html'
|
||||
ARTICLE_URL = 'blog/{date:%Y-%m-%d}-{slug}.html'
|
||||
ARTICLE_SAVE_AS = 'blog/{date:%Y-%m-%d}-{slug}.html'
|
||||
|
||||
|
||||
INDEX_SAVE_AS = 'articles.html'
|
||||
|
||||
USE_FOLDER_AS_CATEGORY = True
|
||||
DISPLAY_PAGES_ON_MENU = False
|
||||
DISPLAY_CATEGORIES_ON_MENU = False
|
||||
|
||||
MENUITEMS = (('HOME |', 'index.html'),
|
||||
('NEWS |', 'articles.html'),
|
||||
('CATEGORIE |', 'categories.html'),
|
||||
('TAG |', 'tags.html'),
|
||||
('CONTATTI |', 'contatti.html'),
|
||||
('RSS', 'feeds/all.atom.xml'),)
|
25
publishconf.py
Normal file
25
publishconf.py
Normal file
|
@ -0,0 +1,25 @@
|
|||
#!/usr/bin/env python
|
||||
# -*- coding: utf-8 -*- #
|
||||
from __future__ import unicode_literals
|
||||
|
||||
# This file is only used if you use `make publish` or
|
||||
# explicitly specify it as your config file.
|
||||
|
||||
import os
|
||||
import sys
|
||||
sys.path.append(os.curdir)
|
||||
from pelicanconf import *
|
||||
|
||||
# If your site is available via HTTPS, make sure SITEURL begins with https://
|
||||
SITEURL = 'https://unit.abbiamoundominio.org/tmp/'
|
||||
RELATIVE_URLS = False
|
||||
|
||||
FEED_ALL_ATOM = 'feeds.atom.xml'
|
||||
FEED_ALL_RSS = 'feeds.xml'
|
||||
|
||||
DELETE_OUTPUT_DIRECTORY = True
|
||||
|
||||
# Following items are often useful when publishing
|
||||
|
||||
#DISQUS_SITENAME = ""
|
||||
#GOOGLE_ANALYTICS = ""
|
80
tasks.py
Normal file
80
tasks.py
Normal file
|
@ -0,0 +1,80 @@
|
|||
# -*- coding: utf-8 -*-
|
||||
|
||||
import os
|
||||
import shutil
|
||||
import sys
|
||||
import datetime
|
||||
|
||||
from invoke import task
|
||||
from invoke.util import cd
|
||||
from pelican.server import ComplexHTTPRequestHandler, RootedHTTPServer
|
||||
|
||||
CONFIG = {
|
||||
# Local path configuration (can be absolute or relative to tasks.py)
|
||||
'deploy_path': 'output',
|
||||
# Remote server configuration
|
||||
'production': 'root@abbiamoundominio.org:22',
|
||||
'dest_path': '/var/www/unit.abbiamoundominio.org/',
|
||||
# Port for `serve`
|
||||
'port': 8000,
|
||||
}
|
||||
|
||||
@task
|
||||
def clean(c):
|
||||
"""Remove generated files"""
|
||||
if os.path.isdir(CONFIG['deploy_path']):
|
||||
shutil.rmtree(CONFIG['deploy_path'])
|
||||
os.makedirs(CONFIG['deploy_path'])
|
||||
|
||||
@task
|
||||
def build(c):
|
||||
"""Build local version of site"""
|
||||
c.run('pelican -s pelicanconf.py')
|
||||
|
||||
@task
|
||||
def rebuild(c):
|
||||
"""`build` with the delete switch"""
|
||||
c.run('pelican -d -s pelicanconf.py')
|
||||
|
||||
@task
|
||||
def regenerate(c):
|
||||
"""Automatically regenerate site upon file modification"""
|
||||
c.run('pelican -r -s pelicanconf.py')
|
||||
|
||||
@task
|
||||
def serve(c):
|
||||
"""Serve site at http://localhost:8000/"""
|
||||
|
||||
class AddressReuseTCPServer(RootedHTTPServer):
|
||||
allow_reuse_address = True
|
||||
|
||||
server = AddressReuseTCPServer(
|
||||
CONFIG['deploy_path'],
|
||||
('', CONFIG['port']),
|
||||
ComplexHTTPRequestHandler)
|
||||
|
||||
sys.stderr.write('Serving on port {port} ...\n'.format(**CONFIG))
|
||||
server.serve_forever()
|
||||
|
||||
@task
|
||||
def reserve(c):
|
||||
"""`build`, then `serve`"""
|
||||
build(c)
|
||||
serve(c)
|
||||
|
||||
@task
|
||||
def preview(c):
|
||||
"""Build production version of site"""
|
||||
c.run('pelican -s publishconf.py')
|
||||
|
||||
|
||||
@task
|
||||
def publish(c):
|
||||
"""Publish to production via rsync"""
|
||||
c.run('pelican -s publishconf.py')
|
||||
c.run(
|
||||
'rsync --delete --exclude ".DS_Store" -pthrvz -c '
|
||||
'{} {production}:{dest_path}'.format(
|
||||
CONFIG['deploy_path'].rstrip('/') + '/',
|
||||
**CONFIG))
|
||||
|
37
themes/minimo/static/css/style.css
Normal file
37
themes/minimo/static/css/style.css
Normal file
|
@ -0,0 +1,37 @@
|
|||
body {
|
||||
font-family: "Courier New", Courier, monospace
|
||||
font-size: 100%;
|
||||
background-color: #F4F4E8;
|
||||
color: #333333;
|
||||
min-width: 400px;
|
||||
min-height: 200px;
|
||||
margin: 2% 2%;
|
||||
padding:0;
|
||||
height:98%;;
|
||||
margin-left: 33%;
|
||||
margin-right: 33%;
|
||||
}
|
||||
|
||||
a:link { color: #003399; text-decoration: none; }
|
||||
a:visited { color: #336699; text-decoration: none; }
|
||||
a:hover { color: #003399; background: #ff8c19; text-decoration: none; }
|
||||
|
||||
h1 a { color: inherit !important }
|
||||
h2 a { color: inherit !important }
|
||||
h3 a { color: inherit !important }
|
||||
h4 a { color: inherit !important }
|
||||
h5 a { color: inherit !important }
|
||||
h6 a { color: inherit !important }
|
||||
|
||||
#menu li {
|
||||
display: inline;
|
||||
}
|
||||
|
||||
#post-list {
|
||||
margin-bottom: 1em;
|
||||
margin-top: 1em;
|
||||
}
|
||||
|
||||
pre {
|
||||
margin: 2em 1em 2em 4em;
|
||||
}
|
42
themes/minimo/templates/archives.html
Normal file
42
themes/minimo/templates/archives.html
Normal file
|
@ -0,0 +1,42 @@
|
|||
{% extends "index.html" %}
|
||||
{% block title %}Archivio {{ SITENAME }}{% endblock %}
|
||||
{% block ogtitle %}Archivio {{ SITENAME }}{% endblock %}
|
||||
{% block ogurl %}{{ SITEURL }}/archives.html{%endblock%}
|
||||
{% block canonicalurl %}{{ SITEURL }}/archives.html{%endblock%}
|
||||
|
||||
{% block content %}
|
||||
<div class="span9">
|
||||
<section>
|
||||
<h1>{% block content_title %}Archivio per data{% endblock %}</h1>
|
||||
|
||||
{% for article in dates %}
|
||||
{% set this_year = article.date.strftime('%Y') %}
|
||||
|
||||
{% if this_year != prev_year %}
|
||||
<div class="row-fluid archive_row">
|
||||
<div class="span1 archive_year">{{ this_year }}</div>
|
||||
</div>
|
||||
{% endif %}
|
||||
{% if this_year != prev_year or this_month != prev_month %}
|
||||
<div class="row-fluid archive_row">
|
||||
<div class="offset1 span1 archive_month">{{ this_month }}</div>
|
||||
</div>
|
||||
{% endif %}
|
||||
<div class="row-fluid archive_row">
|
||||
{% if this_month != prev_month or this_day != prev_day %}
|
||||
<div class="offset1 span1 archive_day">
|
||||
{{ this_day }}
|
||||
</div>
|
||||
{% endif %}
|
||||
<div class="{% if this_year == prev_year and this_month == prev_month and this_day == prev_day %}offset2 {% endif %}span10">
|
||||
<dd><a href="{{ SITEURL }}/{{ article.url }}">{{ article.title }}</a> <small>{{ article.category }}</small></dd>
|
||||
</div>
|
||||
</div>
|
||||
{% set prev_year = this_year %}
|
||||
{% set prev_month = this_month %}
|
||||
{% set prev_day = this_day %}
|
||||
{% endfor %}
|
||||
</section>
|
||||
</div>
|
||||
{% endblock %}
|
||||
|
28
themes/minimo/templates/article.html
Normal file
28
themes/minimo/templates/article.html
Normal file
|
@ -0,0 +1,28 @@
|
|||
{% extends "base.html" %}
|
||||
|
||||
{% block title %}{{ article.title|striptags }} | {{ SITENAME }}{% endblock %}
|
||||
{% block ogtitle %}{{ article.title|striptags }}{% endblock %}
|
||||
{% block ogurl %}{{ SITEURL }}/{{ article.url }}{%endblock%}
|
||||
{% block ogtype %}article{%endblock%}
|
||||
{% block canonicalurl %}{{ SITEURL }}/{{ article.url }}{%endblock%}
|
||||
|
||||
{% block content %}
|
||||
|
||||
<div class="span10 offset1">
|
||||
<section>
|
||||
<article>
|
||||
<header>
|
||||
<h1 class="entry-title">
|
||||
<a href="{{ SITEURL }}/{{ article.url }}" rel="bookmark"
|
||||
title="Permalink a {{ article.title|striptags }}">{{ article.title}}</a></h1>
|
||||
</header>
|
||||
|
||||
<div class="entry-content">
|
||||
{% include 'article_infos.html' %}
|
||||
{{ article.content }}
|
||||
</div>
|
||||
|
||||
</article>
|
||||
</section>
|
||||
</div>
|
||||
{% endblock %}
|
25
themes/minimo/templates/article_infos.html
Normal file
25
themes/minimo/templates/article_infos.html
Normal file
|
@ -0,0 +1,25 @@
|
|||
<footer class="post-info">
|
||||
{% if article.author %}
|
||||
<address class="vcard author">
|
||||
<a class="url fn" href="{{ SITEURL }}/{{ article.author.url }}">{{ article.author }}</a>
|
||||
</address>
|
||||
{% endif %}
|
||||
|
||||
data: {{ article.date.strftime('%d %B %Y') }}
|
||||
|
||||
<br>
|
||||
|
||||
categoria: <a href="{{ SITEURL }}/{{ article.category.url }}">{{ article.category }}</a>
|
||||
|
||||
<br>
|
||||
|
||||
{% if article.tags %}
|
||||
tag: {% for tag in article.tags %}
|
||||
<a href="{{ SITEURL }}/{{ tag.url }}">{{ tag }}</a>
|
||||
{% endfor %}
|
||||
{% endif %}
|
||||
|
||||
{% import 'translations.html' as translations with context %}
|
||||
{{ translations.translations_for(article) }}
|
||||
|
||||
</footer>
|
5
themes/minimo/templates/author.html
Normal file
5
themes/minimo/templates/author.html
Normal file
|
@ -0,0 +1,5 @@
|
|||
{% extends "index.html" %}
|
||||
{% block title %}{{ SITENAME }} - {{ author }} | {{ SITENAME }}{% endblock %}
|
||||
{% block ogtitle %}{{ SITENAME }} - {{ author }}{% endblock %}
|
||||
{% block ogurl %}{{ SITEURL }}/{{ author.url }}{%endblock%}
|
||||
{% block canonicalurl %}{{ SITEURL }}/{{ author.url }}{%endblock%}
|
72
themes/minimo/templates/base.html
Normal file
72
themes/minimo/templates/base.html
Normal file
|
@ -0,0 +1,72 @@
|
|||
<!DOCTYPE html>
|
||||
<html lang="{{ DEFAULT_LANG }}">
|
||||
<head>
|
||||
{% block head %}
|
||||
<title>{% block title %}{{ SITENAME }}{% endblock title %}</title>
|
||||
<meta charset="utf-8" />
|
||||
<link rel="stylesheet" type="text/css" href="{{ SITEURL }}/theme/css/style.css" />
|
||||
{% if FEED_ALL_ATOM %}
|
||||
<link href="{{ FEED_DOMAIN }}/{{ FEED_ALL_ATOM }}" type="application/atom+xml" rel="alternate" title="{{ SITENAME }} Full Atom Feed" />
|
||||
{% endif %}
|
||||
{% if FEED_ALL_RSS %}
|
||||
<link href="{{ FEED_DOMAIN }}/{{ FEED_ALL_RSS }}" type="application/rss+xml" rel="alternate" title="{{ SITENAME }} Full RSS Feed" />
|
||||
{% endif %}
|
||||
{% if FEED_ATOM %}
|
||||
<link href="{{ FEED_DOMAIN }}/{{ FEED_ATOM }}" type="application/atom+xml" rel="alternate" title="{{ SITENAME }} Atom Feed" />
|
||||
{% endif %}
|
||||
{% if FEED_RSS %}
|
||||
<link href="{{ FEED_DOMAIN }}/{{ FEED_RSS }}" type="application/rss+xml" rel="alternate" title="{{ SITENAME }} RSS Feed" />
|
||||
{% endif %}
|
||||
{% if CATEGORY_FEED_ATOM and category %}
|
||||
<link href="{{ FEED_DOMAIN }}/{{ CATEGORY_FEED_ATOM|format(category.slug) }}" type="application/atom+xml" rel="alternate" title="{{ SITENAME }} Categories Atom Feed" />
|
||||
{% endif %}
|
||||
{% if CATEGORY_FEED_RSS and category %}
|
||||
<link href="{{ FEED_DOMAIN }}/{{ CATEGORY_FEED_RSS|format(category.slug) }}" type="application/rss+xml" rel="alternate" title="{{ SITENAME }} Categories RSS Feed" />
|
||||
{% endif %}
|
||||
{% if TAG_FEED_ATOM and tag %}
|
||||
<link href="{{ FEED_DOMAIN }}/{{ TAG_FEED_ATOM|format(tag.slug) }}" type="application/atom+xml" rel="alternate" title="{{ SITENAME }} Tags Atom Feed" />
|
||||
{% endif %}
|
||||
{% if TAG_FEED_RSS and tag %}
|
||||
<link href="{{ FEED_DOMAIN }}/{{ TAG_FEED_RSS|format(tag.slug) }}" type="application/rss+xml" rel="alternate" title="{{ SITENAME }} Tags RSS Feed" />
|
||||
{% endif %}
|
||||
{% endblock head %}
|
||||
</head>
|
||||
|
||||
<body id="index" class="home">
|
||||
<header id="banner" class="body">
|
||||
<h1><a href="{{ SITEURL }}/">{{ SITENAME }} <strong>{{ SITESUBTITLE }}</strong></a></h1>
|
||||
<img src="images/logo.png" alt="logo" width="85" height="85" border="0">
|
||||
</header><!-- /#banner -->
|
||||
<nav id="menu"><ul>
|
||||
{% for title, link in MENUITEMS %}
|
||||
<li><a href="{{ link }}">{{ title }}</a></li>
|
||||
{% endfor %}
|
||||
{% if DISPLAY_PAGES_ON_MENU %}
|
||||
{% for p in pages %}
|
||||
<li{% if p == page %} class="active"{% endif %}><a href="{{ SITEURL }}/{{ p.url }}">{{ p.title }}</a></li>
|
||||
{% endfor %}
|
||||
{% else %}
|
||||
{% if DISPLAY_CATEGORIES_ON_MENU %}
|
||||
{% for cat, null in categories %}
|
||||
<li{% if cat == category %} class="active"{% endif %}><a href="{{ SITEURL }}/{{ cat.url }}">{{ cat }}</a></li>
|
||||
{% endfor %}
|
||||
{% endif %}
|
||||
{% endif %}
|
||||
</ul></nav><!-- /#menu -->
|
||||
{% block content %}
|
||||
{% endblock %}
|
||||
|
||||
<footer id="contentinfo" class="body">
|
||||
<hr>
|
||||
<address id="about" class="vcard body">
|
||||
<small>
|
||||
unit hacklab 2019 - Alimentato da
|
||||
<a href="http://python.org">Python</a> e
|
||||
<a href="http://getpelican.com/">Pelican</a>, tema
|
||||
<a href="https://git.abbiamoundominio.org/dan/minimo">minimo</a>
|
||||
</small>
|
||||
</address><!-- /#about -->
|
||||
</footer><!-- /#contentinfo -->
|
||||
|
||||
</body>
|
||||
</html>
|
19
themes/minimo/templates/categories.html
Normal file
19
themes/minimo/templates/categories.html
Normal file
|
@ -0,0 +1,19 @@
|
|||
{% extends "index.html" %}
|
||||
{% block title %}Categorie di {{ SITENAME }}{% endblock %}
|
||||
{% block ogtitle %}Categorie di {{ SITENAME }}{% endblock %}
|
||||
{% block ogurl %}{{ SITEURL }}/categories.html{%endblock%}
|
||||
{% block canonicalurl %}{{ SITEURL }}/categories.html{%endblock%}
|
||||
|
||||
{% block content %}
|
||||
<div class="span9">
|
||||
<section>
|
||||
<h1>{% block content_title %}Categorie {% endblock %}</h1>
|
||||
|
||||
<dl>
|
||||
{% for category, articles in categories %}
|
||||
<dd><a href="{{ SITEURL }}/{{ category.url }}">{{ category }} ({{ articles|count }})</a></dd>
|
||||
{% endfor %}
|
||||
</dl>
|
||||
</section>
|
||||
</div>
|
||||
{% endblock %}
|
6
themes/minimo/templates/category.html
Normal file
6
themes/minimo/templates/category.html
Normal file
|
@ -0,0 +1,6 @@
|
|||
{% extends "archives.html" %}
|
||||
{% block title %}{{ SITENAME }} - {{ category }}{% endblock %}
|
||||
{% block content_title %} Ricerca per categoria: {{ category }}{% endblock %}
|
||||
{% block ogtitle %}{{ SITENAME }} - {{ category }}{% endblock %}
|
||||
{% block ogurl %}{{ SITEURL }}/{{ category.url }}{%endblock%}
|
||||
{% block canonicalurl %}{{ SITEURL }}/{{ category.url }}{%endblock%}
|
74
themes/minimo/templates/index.html
Normal file
74
themes/minimo/templates/index.html
Normal file
|
@ -0,0 +1,74 @@
|
|||
{% extends "base.html" %}
|
||||
{% block content_title %}{% endblock %}
|
||||
{% block ogtitle %}{{ SITENAME }}{% endblock %}
|
||||
{% block ogurl %}{{ SITEURL }}{%endblock%}
|
||||
{% block canonicalurl %}{{ SITEURL }}{%endblock%}
|
||||
|
||||
{% block content %}
|
||||
<div class="span9">
|
||||
{% if articles %}
|
||||
{% for article in articles_page.object_list %}
|
||||
{% if loop.length > 0 %}
|
||||
{% if loop.first %}
|
||||
<section>
|
||||
<ol id="posts-list" class="hfeed" start="{{ articles_paginator.per_page -1 }}">
|
||||
{% endif %}
|
||||
<article>
|
||||
<header>
|
||||
<h1 class="entry-title">
|
||||
<a href="{{ SITEURL }}/{{ article.url }}" rel="bookmark" title="Permalink: {{ article.title|striptags }}">
|
||||
{{ article.title }}
|
||||
</a>
|
||||
</h1>
|
||||
</header>
|
||||
<div class="entry-content">
|
||||
{% include 'article_infos.html' %}
|
||||
{{ article.summary }}
|
||||
<p class="readmore">
|
||||
<a class="btn btn-small btn-info" href="{{ SITEURL }}/{{ article.url }}">continua..</a>
|
||||
</p>
|
||||
</div>
|
||||
<hr/>
|
||||
</article>
|
||||
{% if loop.last %}
|
||||
</ol><!-- /#posts-list -->
|
||||
{% if loop.last and (articles_page.has_previous()
|
||||
or not articles_page.has_previous() and loop.length > 1) %}
|
||||
{% include 'pagination.html' %}
|
||||
{% endif %}
|
||||
</section><!-- /#content -->
|
||||
{% endif %}
|
||||
{% endif %}
|
||||
{% endfor %}
|
||||
{% else %}
|
||||
<section>
|
||||
<h2>Pages</h2>
|
||||
{% for page in PAGES %}
|
||||
<li><a href="{{ SITEURL }}/{{ page.url }}">{{ page.title }}</a></li>
|
||||
{% endfor %}
|
||||
</section>
|
||||
{% endif %}
|
||||
</div>
|
||||
{% endblock content %}
|
||||
|
||||
{% if LINKS %}
|
||||
<div>
|
||||
<h2>Links</h2>
|
||||
<ul>
|
||||
{% for name, link in LINKS %}
|
||||
<li><a href="{{ link }}">{{ name }}</a></li>
|
||||
{% endfor %}
|
||||
</ul>
|
||||
</div><!-- /.Links -->
|
||||
{% endif %}
|
||||
{% if TAG_CLOUD_STEPS %}
|
||||
<div>
|
||||
<h2>Tags</h2>
|
||||
<ul id="cloud">
|
||||
{% for tag in tag_cloud %}
|
||||
<li class="tag-{{ tag.1 }}"><a href="{{ SITEURL }}/{{ tag.0.url }}">{{ tag.0 }}</a></li>
|
||||
{% endfor %}
|
||||
</ul>
|
||||
</div>
|
||||
{% endif %}<!-- /.Tags -->
|
||||
</div>
|
15
themes/minimo/templates/page.html
Normal file
15
themes/minimo/templates/page.html
Normal file
|
@ -0,0 +1,15 @@
|
|||
{% extends "base.html" %}
|
||||
{% block title %}{{ page.title }} | {{ SITENAME }}{% endblock %}
|
||||
{% block ogtitle %}{{ page.title|striptags }}{% endblock %}
|
||||
{% block ogurl %}{{ SITEURL }}/{{ page.url }}{%endblock%}%}
|
||||
{% block canonicalurl %}{{ SITEURL }}/{{ page.url }}{%endblock%}
|
||||
|
||||
{% block content %}
|
||||
<section >
|
||||
<h1 class="entry-title">{{ page.title }}</h1>
|
||||
{% import 'translations.html' as translations with context %}
|
||||
{{ translations.translations_for(page) }}
|
||||
{{ page.content }}
|
||||
</section>
|
||||
{% endblock %}
|
||||
|
6
themes/minimo/templates/tag.html
Normal file
6
themes/minimo/templates/tag.html
Normal file
|
@ -0,0 +1,6 @@
|
|||
{% extends "archives.html" %}
|
||||
{% block title %}{{ SITENAME }} - {{ tag }} | {{ SITENAME }}{% endblock %}
|
||||
{% block content_title %}Ricerca per tag: "{{ tag }}"{% endblock %}
|
||||
{% block ogtitle %}{{ SITENAME }} - {{ tag }}{% endblock %}
|
||||
{% block ogurl %}{{ SITEURL }}/{{ tag.url }}{%endblock%}
|
||||
{% block canonicalurl %}{{ SITEURL }}/{{ tag.url }}{%endblock%}
|
19
themes/minimo/templates/tags.html
Normal file
19
themes/minimo/templates/tags.html
Normal file
|
@ -0,0 +1,19 @@
|
|||
{% extends "index.html" %}
|
||||
{% block title %}Tags in {{ SITENAME }}{% endblock %}
|
||||
{% block ogtitle %}Tags in {{ SITENAME }}{% endblock %}
|
||||
{% block ogurl %}{{ SITEURL }}/tags.html{%endblock%}%}
|
||||
{% block canonicalurl %}{{ SITEURL }}/tags.html{%endblock%}
|
||||
|
||||
{% block content %}
|
||||
<div class="span9">
|
||||
<section>
|
||||
<h1>{% block content_title %}Tags{% endblock %}</h1>
|
||||
|
||||
<dl>
|
||||
{% for tag, articles in tags|sort %}
|
||||
<dd><a href="{{ SITEURL }}/{{ tag.url }}">{{ tag }} ({{ articles|count }})</a></dd>
|
||||
{% endfor %}
|
||||
</dl>
|
||||
</section>
|
||||
</div>
|
||||
{% endblock %}
|
10
themes/minimo/templates/translations.html
Normal file
10
themes/minimo/templates/translations.html
Normal file
|
@ -0,0 +1,10 @@
|
|||
{% macro translations_for(article) %}
|
||||
{% if article.translations %}
|
||||
<br>
|
||||
Translations:
|
||||
{% for translation in article.translations %}
|
||||
<a href="{{ SITEURL }}/{{ translation.url }}">{{ translation.lang }}</a>
|
||||
{% endfor %}
|
||||
{% endif %}
|
||||
{% endmacro %}
|
||||
|
Loading…
Reference in New Issue
Block a user