first commit
108
Makefile
Normal file
@@ -0,0 +1,108 @@
|
||||
PY=python3
|
||||
PELICAN=pelican
|
||||
PELICANOPTS=
|
||||
|
||||
BASEDIR=$(CURDIR)
|
||||
INPUTDIR=$(BASEDIR)/content
|
||||
OUTPUTDIR=$(BASEDIR)/output
|
||||
CONFFILE=$(BASEDIR)/pelicanconf.py
|
||||
PUBLISHCONF=$(BASEDIR)/publishconf.py
|
||||
|
||||
FTP_HOST=ftp.strato.de
|
||||
FTP_USER=konni@nursery-cryme.de
|
||||
FTP_TARGET_DIR=/pelican
|
||||
|
||||
SSH_HOST=ssh.strato.de
|
||||
SSH_PORT=22
|
||||
SSH_USER=nursery-cryme.de
|
||||
SSH_TARGET_DIR=/pelican
|
||||
|
||||
S3_BUCKET=my_s3_bucket
|
||||
|
||||
CLOUDFILES_USERNAME=my_rackspace_username
|
||||
CLOUDFILES_API_KEY=my_rackspace_api_key
|
||||
CLOUDFILES_CONTAINER=my_cloudfiles_container
|
||||
|
||||
DROPBOX_DIR=~/Dropbox/Public/
|
||||
|
||||
DEBUG ?= 0
|
||||
ifeq ($(DEBUG), 1)
|
||||
PELICANOPTS += -D
|
||||
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 devserver [PORT=8000] start/restart develop_server.sh '
|
||||
@echo ' make stopserver stop local server '
|
||||
@echo ' make ssh_upload upload the web site via SSH '
|
||||
@echo ' make rsync_upload upload the web site via rsync+ssh '
|
||||
@echo ' make dropbox_upload upload the web site via Dropbox '
|
||||
@echo ' make ftp_upload upload the web site via FTP '
|
||||
@echo ' make s3_upload upload the web site via S3 '
|
||||
@echo ' make cf_upload upload the web site via Cloud Files'
|
||||
@echo ' make github upload the web site via gh-pages '
|
||||
@echo ' '
|
||||
@echo 'Set the DEBUG variable to 1 to enable debugging, e.g. make DEBUG=1 html'
|
||||
@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
|
||||
cd $(OUTPUTDIR) && $(PY) -m pelican.server $(PORT)
|
||||
else
|
||||
cd $(OUTPUTDIR) && $(PY) -m pelican.server
|
||||
endif
|
||||
|
||||
devserver:
|
||||
ifdef PORT
|
||||
$(BASEDIR)/develop_server.sh restart $(PORT)
|
||||
else
|
||||
$(BASEDIR)/develop_server.sh restart
|
||||
endif
|
||||
|
||||
stopserver:
|
||||
kill -9 `cat pelican.pid`
|
||||
kill -9 `cat srv.pid`
|
||||
@echo 'Stopped Pelican and SimpleHTTPServer processes running in background.'
|
||||
|
||||
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 -rvz --delete $(OUTPUTDIR)/ $(SSH_USER)@$(SSH_HOST):$(SSH_TARGET_DIR) --cvs-exclude
|
||||
|
||||
dropbox_upload: publish
|
||||
cp -r $(OUTPUTDIR)/* $(DROPBOX_DIR)
|
||||
|
||||
ftp_upload: publish
|
||||
lftp ftp://$(FTP_USER)@$(FTP_HOST) -e "mirror -R $(OUTPUTDIR) $(FTP_TARGET_DIR) ; quit"
|
||||
|
||||
s3_upload: publish
|
||||
s3cmd sync $(OUTPUTDIR)/ s3://$(S3_BUCKET) --acl-public --delete-removed
|
||||
|
||||
cf_upload: publish
|
||||
cd $(OUTPUTDIR) && swift -v -A https://auth.api.rackspacecloud.com/v1.0 -U $(CLOUDFILES_USERNAME) -K $(CLOUDFILES_API_KEY) upload -c $(CLOUDFILES_CONTAINER) .
|
||||
|
||||
github: publish
|
||||
ghp-import $(OUTPUTDIR)
|
||||
git push origin gh-pages
|
||||
|
||||
.PHONY: html help clean regenerate serve devserver publish ssh_upload rsync_upload dropbox_upload ftp_upload s3_upload cf_upload github
|
||||
6
content/images/.directory
Normal file
@@ -0,0 +1,6 @@
|
||||
[Dolphin]
|
||||
Timestamp=2014,8,14,1,52,3
|
||||
Version=3
|
||||
|
||||
[Settings]
|
||||
HiddenFilesShown=true
|
||||
BIN
content/images/huepfburg.jpg
Normal file
|
After Width: | Height: | Size: 4.0 KiB |
BIN
content/images/logo.png
Normal file
|
After Width: | Height: | Size: 5.0 MiB |
BIN
content/images/pysumo.png
Normal file
|
After Width: | Height: | Size: 244 KiB |
BIN
content/images/pysumo2.png
Normal file
|
After Width: | Height: | Size: 181 KiB |
BIN
content/images/rssicon.png
Normal file
|
After Width: | Height: | Size: 1.7 KiB |
BIN
content/images/willkommen.jpg
Normal file
|
After Width: | Height: | Size: 32 KiB |
10
content/index.md
Normal file
@@ -0,0 +1,10 @@
|
||||
Title: Willkommen
|
||||
Slug: index
|
||||
Description: Start Page
|
||||
Author: Konstantin Zangerle
|
||||
Date: 2017/10/05
|
||||
|
||||
|
||||
# First Contact
|
||||
|
||||
First Contact ist eine O-Phasengruppe
|
||||
11
content/pages/404.rst
Normal file
@@ -0,0 +1,11 @@
|
||||
|
||||
:title: Error 404
|
||||
:Robots: noindex,nofollow
|
||||
:date: 2015/03/15
|
||||
:status: hidden
|
||||
:slug: 404
|
||||
|
||||
Error 404
|
||||
=========
|
||||
|
||||
Woops. Looks like this page doesn't exist.
|
||||
10
content/pages/Kontakt/datenschutz.rst
Normal file
@@ -0,0 +1,10 @@
|
||||
|
||||
:title: Datenschutzerklärung
|
||||
:date: 2015/03/15
|
||||
:pageorder: 017
|
||||
|
||||
Die Nutzung unserer Webseite ist in der Regel ohne Angabe personenbezogener Daten möglich. Soweit auf unseren Seiten personenbezogene Daten (beispielsweise Name, Anschrift oder eMail-Adressen) erhoben werden, erfolgt dies, soweit möglich, stets auf freiwilliger Basis. Diese Daten werden ohne Ihre ausdrückliche Zustimmung nicht an Dritte weitergegeben.
|
||||
Wir weisen darauf hin, dass die Datenübertragung im Internet (z.B. bei der Kommunikation per E-Mail) Sicherheitslücken aufweisen kann. Ein lückenloser Schutz der Daten vor dem Zugriff durch Dritte ist nicht möglich.
|
||||
Der Nutzung von im Rahmen der Impressumspflicht veröffentlichten Kontaktdaten durch Dritte zur Übersendung von nicht ausdrücklich angeforderter Werbung und Informationsmaterialien wird hiermit ausdrücklich widersprochen. Die Betreiber der Seiten behalten sich ausdrücklich rechtliche Schritte im Falle der unverlangten Zusendung von Werbeinformationen, etwa durch Spam-Mails, vor.
|
||||
|
||||
Quellen: eRecht24 Datenschutzerklärung
|
||||
22
content/pages/Kontakt/faq.rst
Normal file
@@ -0,0 +1,22 @@
|
||||
|
||||
:title: FAQ
|
||||
:Date: 2014/08/13
|
||||
:pageorder: 015
|
||||
|
||||
Häufige Fragen
|
||||
==============
|
||||
|
||||
#. **Mir kommt alles hier so statisch vor?!**
|
||||
Das ist durchaus so beabsichtigt. Mir gefällt es nicht, dass alle so tun, als hätten sie die wichtigsten
|
||||
Inhalte und müssten über alles mögliche Schreiben. Mein Vorsatz ist es über Sachen zu schreiben, von denen
|
||||
ich Ahnung hab und die dann möglichst gut rüberzubringen. Das bringt mir was und dir was!
|
||||
#. **Ich will dir aber unbedingt meine Meinung dazu sagen!**
|
||||
Gut. Ich hoffe, dass sie auch durchdacht ist. Schreib mir doch ne Mail, oder wenn du bei mir in der Nähe wohnst, komm in die
|
||||
`Fachschaft Informatik <http://fsmi.uni-karlsruhe.de>`_. Dann kann man sich bei nem Kaffee unterhalten.
|
||||
#. **Wie bleibe ich auf dem aktuellstem Stand**
|
||||
Benutze die [RSS-Feeds!](/blog/2014/rssfeed). Die anderen Seiten werden sich grundlegend nicht verändern, hier muss ich dich darauf vertrösten, ab und an hier vorbeizuschauen.
|
||||
#. **Warum nur CDs und keine Bücher/Filme/Schallplatten?**
|
||||
Mit CDs verbring ich die meiste Zeit. Es ist eigentlich ein super Medium (existent, digitale Qualität, enthält Musik) und liegt mir am meisten am Herzen... <br/>
|
||||
Wenn ich aber ein gutes Buch lese, dann erfährst du es im Blog!
|
||||
#. **Das gefällt mir, darf ich das haben?**
|
||||
Alle Inhalte, die von mir erstellt wurden, dieser Webseite stelle ich unter die Creative-Commons mit Namensnennung. D.h. wenn du ein Bild verwendest, schreib meinen Namen dazu und CC-by-3.0. Über einen Link auf die Webseite freu ich mich aber auch. Wenn dir ein ganzer Blogeintrag gefällt, verlink ihn doch.
|
||||
33
content/pages/Kontakt/impressum.rst
Normal file
@@ -0,0 +1,33 @@
|
||||
|
||||
:title: Impressum
|
||||
:date: 2015/03/15
|
||||
:pageorder: 013
|
||||
|
||||
|
||||
|
||||
Verantwortlich für den Inhalt:
|
||||
------------------------------------
|
||||
| Konstantin Zangerle
|
||||
| Hauptstraße 177
|
||||
| 67705 Trippstadt
|
||||
| info äät konstantinzangerle.de
|
||||
|
||||
Haftungsausschluss (Disclaimer)
|
||||
-------------------------------------
|
||||
Haftung für Inhalte
|
||||
^^^^^^^^^^^^^^^^^^^^
|
||||
|
||||
Als Diensteanbieter sind wir gemäß § 7 Abs.1 TMG für eigene Inhalte auf diesen Seiten nach den allgemeinen Gesetzen verantwortlich. Nach §§ 8 bis 10 TMG sind wir als Diensteanbieter jedoch nicht verpflichtet, übermittelte oder gespeicherte fremde Informationen zu überwachen oder nach Umständen zu forschen, die auf eine rechtswidrige Tätigkeit hinweisen. Verpflichtungen zur Entfernung oder Sperrung der Nutzung von Informationen nach den allgemeinen Gesetzen bleiben hiervon unberührt. Eine diesbezügliche Haftung ist jedoch erst ab dem Zeitpunkt der Kenntnis einer konkreten Rechtsverletzung möglich. Bei Bekanntwerden von entsprechenden Rechtsverletzungen werden wir diese Inhalte umgehend entfernen.
|
||||
|
||||
Haftung für Links
|
||||
^^^^^^^^^^^^^^^^^^
|
||||
|
||||
Unser Angebot enthält Links zu externen Webseiten Dritter, auf deren Inhalte wir keinen Einfluss haben. Deshalb können wir für diese fremden Inhalte auch keine Gewähr übernehmen. Für die Inhalte der verlinkten Seiten ist stets der jeweilige Anbieter oder Betreiber der Seiten verantwortlich. Die verlinkten Seiten wurden zum Zeitpunkt der Verlinkung auf mögliche Rechtsverstöße überprüft. Rechtswidrige Inhalte waren zum Zeitpunkt der Verlinkung nicht erkennbar. Eine permanente inhaltliche Kontrolle der verlinkten Seiten ist jedoch ohne konkrete Anhaltspunkte einer Rechtsverletzung nicht zumutbar. Bei Bekanntwerden von Rechtsverletzungen werden wir derartige Links umgehend entfernen.
|
||||
|
||||
Urheberrecht
|
||||
^^^^^^^^^^^^^^^^
|
||||
Die durch die Seitenbetreiber erstellten Inhalte und Werke auf diesen Seiten unterliegen dem deutschen Urheberrecht. Die Vervielfältigung, Bearbeitung, Verbreitung und jede Art der Verwertung außerhalb der Grenzen des Urheberrechtes bedürfen der schriftlichen Zustimmung des jeweiligen Autors bzw. Erstellers. Downloads und Kopien dieser Seite sind nur für den privaten, nicht kommerziellen Gebrauch gestattet. Soweit die Inhalte auf dieser Seite nicht vom Betreiber erstellt wurden, werden die Urheberrechte Dritter beachtet. Insbesondere werden Inhalte Dritter als solche gekennzeichnet. Sollten Sie trotzdem auf eine Urheberrechtsverletzung aufmerksam werden, bitten wir um einen entsprechenden Hinweis. Bei Bekanntwerden von Rechtsverletzungen werden wir derartige Inhalte umgehend entfernen.
|
||||
|
||||
Quellen: Disclaimer von eRecht24, dem Portal zum Internetrecht von Rechtsanwalt Sören Siebert
|
||||
|
||||
http://www.e-recht24.de/impressum-generator.html
|
||||
20
content/pages/Kontakt/kontakt.rst
Normal file
@@ -0,0 +1,20 @@
|
||||
|
||||
:title: Kontakt
|
||||
:date: 2017/03/15
|
||||
:pageorder: 011
|
||||
|
||||
Kontakt
|
||||
=======
|
||||
|
||||
Nach der alten Schule
|
||||
---------------------
|
||||
Konstantin Zangerle
|
||||
|
||||
Gerwigstraße 36
|
||||
|
||||
76131 Karlsruhe
|
||||
|
||||
Per Mail
|
||||
----------
|
||||
info äät konstantinzangerle.de
|
||||
|
||||
315
content/pages/cdregal.rst
Normal file
@@ -0,0 +1,315 @@
|
||||
:title: CD-Regal
|
||||
:date: 2014/09/12
|
||||
:pageorder: 009
|
||||
|
||||
Mein CD-Regal
|
||||
=============
|
||||
|
||||
> Ohne Musik wäre das Leben ein Irrtum. (Friedrich Nietzsche)
|
||||
|
||||
Nach diesem Worten befülle ich stetig mein CD-Regal und versuche wenig Irrtümer zu begehn.
|
||||
Möglicherweise befindet sich ja schon ein Blogeintrag über ein Album was dich interessiert?
|
||||
|
||||
Wenn du Ideen hast, welcher Interpret mich interessieren könnte, dann zöger nicht, mich zu [kontaktieren](kontakt).
|
||||
Hauptsache ist, dass irgendeine Form von Kunst dahinter steckt!
|
||||
|
||||
+ 30 Seconds To Mars
|
||||
* 30 Seconds To Mars
|
||||
+ 3 Doors Down
|
||||
* The Better Life
|
||||
+ +44
|
||||
* When Your Heart Stops Beating
|
||||
+ Aereogramme
|
||||
* A Story in White
|
||||
* My Heart Has a Wish That You Would Not Go
|
||||
+ Aida
|
||||
* Aida
|
||||
+ Amy Winehouse
|
||||
* Back to Black
|
||||
* Frank
|
||||
* Lioness- Hidden Treasures
|
||||
+ AnnenMayKantereit
|
||||
* Alles Nix Konkretes
|
||||
+ Avenged Sevenfold
|
||||
* City Of Evil
|
||||
+ Basta
|
||||
* B
|
||||
* basta
|
||||
* Fünf
|
||||
* Wir Sind Wie Wir Sind (Version 2008)
|
||||
+ Beginner
|
||||
* Advanced Chemistry
|
||||
+ Bela B
|
||||
* Bingo
|
||||
+ Black Sabbath
|
||||
* 13(Deluxe Edition)
|
||||
+ Bloc Party
|
||||
* Silent Alarm (Deluxe Edition)
|
||||
+ Breaking Benjamin
|
||||
* Phobia
|
||||
+ Broilers
|
||||
* sic
|
||||
* (sic!)
|
||||
* sic!
|
||||
+ Bruno Mars
|
||||
* Doo-Wops & Hooligans
|
||||
+ Counting Crows
|
||||
* AUGUST AND EVERYTHING AFTER (DELUXE EDITION)
|
||||
* Hard Candy (Advance)
|
||||
* Live at LÉlysée Montmartre
|
||||
* Recovering the Satellites
|
||||
* Saturday Nights & Sunday Mornings
|
||||
* This Desert Life
|
||||
+ Culcha Candela
|
||||
* Culcha Candela
|
||||
* Das Beste
|
||||
+ Daniel Wirtz
|
||||
* Erdling
|
||||
+ Delay, Jan
|
||||
* Wir Kinder vom Bahnhof Soul (Re-Release 2011)
|
||||
+ Die Ärzte
|
||||
* 13
|
||||
* Die Bestie in Menschengestalt
|
||||
* µERÄUSCH
|
||||
* Geräusch
|
||||
* Rock n_Roll Realschule
|
||||
* Rock'n'Roll Realschule
|
||||
+ Die Toten Hosen
|
||||
* Auswärtsspiel
|
||||
* Damenwahl
|
||||
* Im Auftrag des Herrn
|
||||
* In aller Stille
|
||||
* Opel-Gang
|
||||
* Opium fürs Volk
|
||||
* Reich & Sexy II (LIMITED EDITION 2-CD DIGIPAK)
|
||||
* Rock am Ring 2004 Live
|
||||
* Unsterblich
|
||||
* Zurück zum Glück
|
||||
+ Dirty Loops
|
||||
* Loopified
|
||||
+ Dream Theater
|
||||
* 15 Years When Dream And Day Unite
|
||||
* A Change of Seasons
|
||||
* Awake
|
||||
* Black Clouds & Silver Linings
|
||||
* Dream Theater
|
||||
* Falling Into Infinity
|
||||
* Images and Words
|
||||
* Live Scenes from New York - CD
|
||||
* Metropolis, Part 2 Scenes From a Memory
|
||||
* Octavarium
|
||||
* Once in a LIVEtime Disc1
|
||||
* Once in a LIVEtime Disc2
|
||||
* Six Degrees of Inner Turbulence (Disc 1)
|
||||
* Six Degrees Of Inner Turbulence (Disc 2)
|
||||
* Systematic Chaos
|
||||
* Train of Thought
|
||||
* When Dream and Day Unite
|
||||
+ Dropkick Murphys
|
||||
* Blackout
|
||||
* Going Out in Style
|
||||
* Sing Loud, Sing Proud!
|
||||
+ Eels
|
||||
* Beautiful Freak
|
||||
+ Faktion
|
||||
* Faktion
|
||||
+ Fall Out Boy
|
||||
* Save Rock and Roll
|
||||
+ Farin Urlaub Racing Team
|
||||
* Die Wahrheit übers Lügen (CD1)
|
||||
* Die Wahrheit übers Lügen (CD2)
|
||||
+ Foo Fighters
|
||||
* Echoes, Silence, Patience & Grace
|
||||
* Foo Fighters
|
||||
* Skin and Bones
|
||||
* Sonic Highways
|
||||
* The Colour And The Shape
|
||||
+ Genesis
|
||||
* Nursery Cryme
|
||||
* Selling England by the Pound
|
||||
* Wind & Wuthering
|
||||
+ Gotye
|
||||
* Making Mirrors
|
||||
+ Green Day
|
||||
* American Idiot
|
||||
+ Guano Apes
|
||||
* Planet Of The Apes
|
||||
+ Gwen Stefani
|
||||
* Love. Angel. Music. Baby
|
||||
* The Sweet Escape
|
||||
+ Jet
|
||||
* Get Born
|
||||
+ John Butler
|
||||
* Ocean
|
||||
+ Johnny Cash
|
||||
* American IV- The Man Comes Around
|
||||
+ Kelly Clarkson
|
||||
* Breakaway
|
||||
+ Killswitch Engage
|
||||
* The End Of Heartache
|
||||
+ Kings of Leon
|
||||
* Only By The Night
|
||||
+ Kraftklub
|
||||
* In Schwarz (Deluxe Edition)
|
||||
* Keine Nacht für Niemand
|
||||
* Mit K
|
||||
+ Les Cameleons
|
||||
* Joyeux Bordel
|
||||
+ Los Campesinos!
|
||||
* Hold On Now, Youngster
|
||||
+ Lynyrd Skynyrd
|
||||
* (Pronounced leh-nérd_skin-nérd)_(1973)
|
||||
* Second Helping
|
||||
+ Maroon 5
|
||||
* Hands All Over
|
||||
* It Wont Be Soon Before Long
|
||||
* Songs About Jane
|
||||
+ Metallica
|
||||
* Metallica
|
||||
+ Metric
|
||||
* Pagans in Vegas
|
||||
+ Mumford & Sons
|
||||
* Babel
|
||||
* Wilder Mind
|
||||
+ Mumm-Ra
|
||||
* Back to the Shore
|
||||
* These things move in threes
|
||||
+ My Chemical Romance
|
||||
* The Black Parade
|
||||
+ Nine Inch Nails
|
||||
* The Downward Spiral
|
||||
+ Nirvana
|
||||
* In Utero
|
||||
* Nevermind
|
||||
+ No Doubt
|
||||
* The Singles 1992-2003
|
||||
* Tragic Kingdom
|
||||
+ Pink Floyd
|
||||
* The Dark Side Of The Moon - Deluxe Edition Original Album Remastered - CD 1
|
||||
+ Pink
|
||||
* The Truth About Love (CD 1 of 2)
|
||||
+ P J Harvey
|
||||
* Stories From The City, Stories From The Sea
|
||||
+ Placebo
|
||||
* Meds
|
||||
* Without you Im nothing
|
||||
+ P!nk
|
||||
* Can t Take Me Home
|
||||
* Can't Take Me Home
|
||||
* Funhouse
|
||||
* Greatest Hits...So Far!!! [Explicit]
|
||||
* I m Not Dead
|
||||
* I'm Not Dead
|
||||
* M!ssundaztood
|
||||
* Try This
|
||||
+ Queen
|
||||
* A Night At The Opera [UICY-75017]
|
||||
+ Radiohead
|
||||
* OK Computer
|
||||
+ RAMONES
|
||||
* RAMONES (EXPANDED & REMASTERED)
|
||||
+ Red Hot Chili Peppers
|
||||
* Blood Sugar Sex Magik
|
||||
* By The Way
|
||||
* Californication
|
||||
* Freaky Styley
|
||||
* Greatest Hits (CD+DVD)
|
||||
* I M WITH YOU
|
||||
* I'M WITH YOU
|
||||
* Live in Hyde Park
|
||||
* Mother s Milk [Explicit]
|
||||
* Mother's Milk [Explicit]
|
||||
* One Hot Minute
|
||||
* Stadium Arcadium
|
||||
* Stadium Arcadium - Mars
|
||||
* The Red Hot Chili Peppers
|
||||
* The Uplift Mofo Party Plan
|
||||
* Under the Bridge-Sikamicamico
|
||||
+ Regina Spektor
|
||||
* Mary Ann Meets The Gravediggers And Other Short Stories By Regina Spektor
|
||||
* What We Saw From The Cheap Seats
|
||||
+ RHAPSODY
|
||||
* SYMPHONY OF ENCHANTED LANDS
|
||||
+ Rise Against
|
||||
* Appeal to reason
|
||||
* Endgame
|
||||
* Siren Song of the Counter Culture
|
||||
* The Black Market
|
||||
* The Sufferer & The Witness
|
||||
+ Saltatio Mortis
|
||||
* Aus der Asche
|
||||
* Das schwarze 1x1
|
||||
* Des Königs Henker
|
||||
* Erwachen
|
||||
* Heptessenz
|
||||
* Manufactum
|
||||
* Sturm aufs Paradies
|
||||
* Sturm aufs Paradies Limited Bonus CD
|
||||
* Tavernakel
|
||||
* Wachstum über alles
|
||||
* Wer Wind Sæt
|
||||
* Zirkus Zeitgeist
|
||||
* Zirkus Zeitgeist (Limited Deluxe Edition) (CD 2 15 Jahre 15 Bands)
|
||||
+ Schandmaul
|
||||
* Anderswelt
|
||||
* Hexenkessel
|
||||
* Narrenkönig
|
||||
* Traumtänzer
|
||||
* Von Spitzbuben und anderen Halunken
|
||||
* Wahre Hel
|
||||
* Wahre Helden
|
||||
* Wie Pech & Schwefel
|
||||
+ Seeed
|
||||
* Music Monks
|
||||
* Next!
|
||||
* Seeed
|
||||
* Waterpumpee with Anthony B
|
||||
+ Sick Puppies
|
||||
* Dressed Up As Life
|
||||
+ Staind
|
||||
* Chapter V
|
||||
+ Supertramp
|
||||
* Breakfast In America - Deluxe Edition, CD 1
|
||||
* Crime of the Century (Remastered)
|
||||
+ System of a Down
|
||||
* Steal this Album
|
||||
+ Taking Back Sunday
|
||||
* New Again
|
||||
* Tell All Your Friends
|
||||
* Where You Want To Be
|
||||
+ The All‐American Rejects
|
||||
* The All-American Rejects
|
||||
* When the World Comes Down
|
||||
+ The Baseballs
|
||||
* Strings 'n' Stripes
|
||||
+ The Boomtown Rats
|
||||
* The Fine Art of Surfacing
|
||||
+ The Cranberries
|
||||
* No Need To Argue (The Complete Sessions 1994-1995)
|
||||
+ The Cure
|
||||
* Disintegration
|
||||
+ The Fray
|
||||
* How To Save A Life
|
||||
* The Fray
|
||||
+ The Killers
|
||||
* Hot Fuss - Re-Release
|
||||
+ The Kooks
|
||||
* Junk Of The Heart
|
||||
+ The Pretty Reckless
|
||||
* Light Me Up
|
||||
+ Tower Of Power
|
||||
* Back to Oakland
|
||||
* Bump City
|
||||
* In The Slot
|
||||
* Tower Of Power
|
||||
* Urban Renewal
|
||||
+ Turbostaat
|
||||
* Das Island Manøver
|
||||
+ Unknown Artist
|
||||
* Unknown Album
|
||||
+ Volbeat
|
||||
* Guitar Gangsters & Cadillac Blood
|
||||
* Outlaw Gentlemen & Shady Ladies
|
||||
+ Within Temptation
|
||||
* Mother Earth
|
||||
* The Silent Force
|
||||
9
content/pages/index.md
Normal file
@@ -0,0 +1,9 @@
|
||||
Title: Willkommen
|
||||
Description: Start Page
|
||||
Author: Konstantin Zangerle
|
||||
Date: 2017/10/05
|
||||
|
||||
|
||||
# First Contact
|
||||
|
||||
First Contact ist eine O-Phasengruppe
|
||||
75
content/pages/linuxliste.rst
Normal file
@@ -0,0 +1,75 @@
|
||||
|
||||
:title: Linux-Liste
|
||||
:Date: 2014/08/13
|
||||
:pageorder: 007
|
||||
:slug: linux
|
||||
|
||||
Linux-Befehle
|
||||
=============
|
||||
Diese Liste dient mir als Gedächtnisstütze.
|
||||
|
||||
Alle Pdfs in einem Verzeichnis ausdrucken
|
||||
|
||||
.. code-block:: bash
|
||||
|
||||
lpr *.pdf
|
||||
|
||||
Alle Pdfs von einer Webseite herunterladen (optional HTML/FTP Benutzer+PW)
|
||||
|
||||
.. code-block:: bash
|
||||
|
||||
wget -p -r -nd -l 1 -e robots=off -A pdf --user=**USER** --password=**PW** "**URL**"
|
||||
|
||||
vimrc
|
||||
|
||||
.. code-block:: bash
|
||||
|
||||
syntax on
|
||||
set colorcolumn=80
|
||||
:command Uhr :read !date +"\%H:\%M Uhr: "
|
||||
set number
|
||||
|
||||
bash_aliases
|
||||
|
||||
.. code-block:: bash
|
||||
|
||||
|
||||
alias xvlce="xargs -d '\n' vlc -f --play-and-exit"
|
||||
alias videofind='find -type f -iname "*.mp4" -or -iname "*.mpeg" -or -iname "*.mkv" -and ! -wholename "*@eaDir*" ! -wholename "*/.*"'
|
||||
alias nextVideo="cp .last .2last; videofind | sort | grep -F -f .2last -A 1 | tail -n 1 | tee .last | xvlce"
|
||||
alias nextVideoInit="videofind | sort | head -n 1 | tee .last | xvlce"
|
||||
alias randomVideo="videofind | sort -R | head -n 1 | tee .rlast | xvlce "
|
||||
alias rnextVideo="cp .rlast .2rlast; videofind | sort | grep -F -f .2rlast -A 1 | tail -n 1 | tee .rlast | xvlce";
|
||||
alias prevVideo="cp .last .2last ; videofind | sort | grep -B 1 -F -f .2last | head -n 1 > .last"
|
||||
|
||||
alias jfg='setxkbmap de neo -option'
|
||||
alias xvlcwk='setxkbmap de'
|
||||
|
||||
alias gpr='git pull --rebase'
|
||||
alias ss2='sudo shutdown -h +2'
|
||||
|
||||
alias vlce='vlc -f --play-and-exit'
|
||||
|
||||
alias dunkel='sleep 1; xset dpms force off'
|
||||
|
||||
alias tagebuch="vim ~/Diary/`date +%F`"
|
||||
alias kalender="~/git/khal/ikhal -c ~/.khal"
|
||||
|
||||
xbindkeysrc
|
||||
|
||||
.. code-block:: bash
|
||||
|
||||
"xbacklight -inc 2%"
|
||||
XF86MonBrightnessUp
|
||||
"xbacklight -dec 2%"
|
||||
XF86MonBrightnessDown
|
||||
"amixer -q sset Master toggle"
|
||||
XF86AudioMute
|
||||
"amixer -q sset Master 1%-"
|
||||
XF86AudioLowerVolume
|
||||
"amixer -q sset Master 1%+"
|
||||
XF86AudioRaiseVolume
|
||||
"~/bin/ratpoisonInit.sh"
|
||||
XF86Search
|
||||
|
||||
|
||||
43
content/pages/musiker.rst
Normal file
@@ -0,0 +1,43 @@
|
||||
:title: Musiker
|
||||
:Date: 2014/08/20
|
||||
:pageorder: 003
|
||||
:slug: musiker
|
||||
|
||||
Flötist
|
||||
--------
|
||||
Damit hat alles angefangen. Nach mehr oder weniger erfolgreichen Blockflötespiels, fing ich an Querflöte zu spielen. Auch
|
||||
wenn die Zeit gerade nicht vorhanden ist, um genug zu spielen, in den Fingern ist noch vieles gespeichert. Nur die Luft reicht häufig
|
||||
nicht mehr. Aber es wird in nächster Zeit Aufnahmen hier im Blog geben, als Geschenk für alle, die hierher finden.
|
||||
|
||||
Bassist
|
||||
-------
|
||||
.. image :: ../images/huepfburg.jpg
|
||||
:alt: Ich in der Hüpfburg
|
||||
:align: left
|
||||
|
||||
Momentan spiele ich bei `Kaffee ohne Milch <http://kaffee-ohne-milch.de>`_, einer Combo bestehend aus Cajon, 2 Ukulelen, Bass und Klavier.
|
||||
Außerdem bin ich Bassist des `Ukulelenorchesters Kaiserslautern <http://www.ukulele-kl.de/>`_.
|
||||
|
||||
Für Spaß bei Auftritten ist immer gesorgt, manchmal (wie auf dem Bild) auch mit Hüpfburg.
|
||||
|
||||
|
|
||||
|
|
||||
|
|
||||
|
||||
Sänger
|
||||
------
|
||||
Momentan gibts hier leider nichts mehr zu berichten.
|
||||
Nach mehreren Auftritten im Extra-Chor des Pfalztheaters KL habe ich diesen Zweig aus Zeitgründen an den Nagel gehangen.
|
||||
|
||||
Mitgemachte Werke:
|
||||
|
||||
#. Albert Lortzing - Regina
|
||||
#. Elton John & Tim Rice - Aida
|
||||
#. Richard Wagner - Parsifal
|
||||
#. Modest Mussorgsky - Boris Godunow
|
||||
|
||||
Ukulelist
|
||||
---------
|
||||
Meine neueste Idee. Nachdem ich ein Jahr lang durchgehalten hatte, in einer Ukulelenband keine Ukulele zu spielen, nahm ich in Holland eine Ukulele in die Hand und begann die ersten Töne zu spielen. Ob was daraus wird, weiß ich noch nicht, normalerweise werd ich am Bass mehr gebraucht.
|
||||
|
||||
|
||||
20
content/pages/zitate.rst
Normal file
@@ -0,0 +1,20 @@
|
||||
|
||||
:title: Zitate
|
||||
:Date: 2014/08/13
|
||||
:pageorder: 005
|
||||
:slug: zitate
|
||||
|
||||
Meine Lieblingszitate
|
||||
=====================
|
||||
Gruppiert nach Person, aber nicht sortiert.
|
||||
|
||||
- Gregor Gysi
|
||||
- Mit Duckmäusertum und Hasenfüßigkeit erreicht man keine Freundschaft.
|
||||
- Yasmin Hafedh
|
||||
- Denn auf Dauer glücklich sein geht ja nicht. Zumindest nicht, wenn man von sich behauptet, Künstler zu sein
|
||||
- George Orwell
|
||||
- To die hating them, that was freedom.
|
||||
- Edsger W. Dijkstra
|
||||
- Testing shows the presence of bugs, not their absence.
|
||||
- Wally de Backer
|
||||
- You can get addicted to a certain kind of Sadness
|
||||
5
content/test.rst
Normal file
@@ -0,0 +1,5 @@
|
||||
:date: 2015-03-21
|
||||
:title: Test Document
|
||||
:status: draft
|
||||
|
||||
bla bla blub :math:`3 \pi`
|
||||
60
fabfile.py
vendored
Normal file
@@ -0,0 +1,60 @@
|
||||
from fabric.api import *
|
||||
import fabric.contrib.project as project
|
||||
import os
|
||||
|
||||
# Local path configuration (can be absolute or relative to fabfile)
|
||||
env.deploy_path = 'output'
|
||||
DEPLOY_PATH = env.deploy_path
|
||||
|
||||
# Remote server configuration
|
||||
production = 'root@localhost:22'
|
||||
dest_path = '/var/www'
|
||||
|
||||
# Rackspace Cloud Files configuration settings
|
||||
env.cloudfiles_username = 'my_rackspace_username'
|
||||
env.cloudfiles_api_key = 'my_rackspace_api_key'
|
||||
env.cloudfiles_container = 'my_cloudfiles_container'
|
||||
|
||||
|
||||
def clean():
|
||||
if os.path.isdir(DEPLOY_PATH):
|
||||
local('rm -rf {deploy_path}'.format(**env))
|
||||
local('mkdir {deploy_path}'.format(**env))
|
||||
|
||||
def build():
|
||||
local('pelican -s pelicanconf.py')
|
||||
|
||||
def rebuild():
|
||||
clean()
|
||||
build()
|
||||
|
||||
def regenerate():
|
||||
local('pelican -r -s pelicanconf.py')
|
||||
|
||||
def serve():
|
||||
local('cd {deploy_path} && python -m SimpleHTTPServer'.format(**env))
|
||||
|
||||
def reserve():
|
||||
build()
|
||||
serve()
|
||||
|
||||
def preview():
|
||||
local('pelican -s publishconf.py')
|
||||
|
||||
def cf_upload():
|
||||
rebuild()
|
||||
local('cd {deploy_path} && '
|
||||
'swift -v -A https://auth.api.rackspacecloud.com/v1.0 '
|
||||
'-U {cloudfiles_username} '
|
||||
'-K {cloudfiles_api_key} '
|
||||
'upload -c {cloudfiles_container} .'.format(**env))
|
||||
|
||||
@hosts(production)
|
||||
def publish():
|
||||
local('pelican -s publishconf.py')
|
||||
project.rsync_project(
|
||||
remote_dir=dest_path,
|
||||
exclude=".DS_Store",
|
||||
local_dir=DEPLOY_PATH.rstrip('/') + '/',
|
||||
delete=True
|
||||
)
|
||||
47
pelicanconf.py
Normal file
@@ -0,0 +1,47 @@
|
||||
#!/usr/bin/env python3
|
||||
# -*- coding: utf-8 -*- #
|
||||
from __future__ import unicode_literals
|
||||
|
||||
AUTHOR = u'Konstantin Zangerle'
|
||||
SITENAME = u'First Contact 2017'
|
||||
SITEURL = 'http://localhost:8080'
|
||||
|
||||
TIMEZONE = 'Europe/Paris'
|
||||
|
||||
DEFAULT_LANG = u'en'
|
||||
|
||||
# Feed generation is usually not desired when developing
|
||||
FEED_ALL_ATOM = 'feeds/all.atom.xml'
|
||||
CATEGORY_FEED_ATOM = None
|
||||
TRANSLATION_FEED_ATOM = None
|
||||
|
||||
# Blogroll
|
||||
LINKS = (('Pelican', 'http://getpelican.com/'),
|
||||
('Python.org', 'http://python.org/'),
|
||||
('Jinja2', 'http://jinja.pocoo.org/'),
|
||||
('Feed', 'http://konstantinzangerle.de/feeds/blog.atom.xml'),
|
||||
('FS Mathematik / Informatik KIT', 'https://fsmi.uni-karlsruhe.de')
|
||||
)
|
||||
|
||||
# Social widget
|
||||
SOCIAL = (('Facebook','http://facebook.com/konstantin.zangerle'),
|
||||
('GitHub','http://github.com/JustKiddingCode'),)
|
||||
|
||||
DEFAULT_PAGINATION = 3
|
||||
|
||||
# Uncomment following line if you want document-relative URLs when developing
|
||||
RELATIVE_URLS = False
|
||||
|
||||
THEME = "themes/fsmi-theme"
|
||||
#THEME = "themes/jesuislibre"
|
||||
DISPLAY_CATEGORIES_ON_MENU = False
|
||||
PAGE_ORDER_BY = 'pageorder'
|
||||
ARTICLE_SAVE_AS = '{category}/{date:%Y}/{date:%b}/{date:%d}/{title}/index.html'
|
||||
ARTICLE_URL = '{category}/{date:%Y}/{date:%b}/{date:%d}/{title}/'
|
||||
PAGE_SAVE_AS = 'pages/{slug}.html'
|
||||
PLUGIN_PATHS = ["plugins"]
|
||||
#PLUGINS = ["render_math"]
|
||||
|
||||
#MENUITEMS=buildNavigation.getNavigation()
|
||||
|
||||
STATIC_PATHS = ['images', 'tut' ]
|
||||
47
publishconf.py
Normal file
@@ -0,0 +1,47 @@
|
||||
#!/usr/bin/env python3
|
||||
# -*- coding: utf-8 -*- #
|
||||
from __future__ import unicode_literals
|
||||
|
||||
AUTHOR = u'Konstantin Zangerle'
|
||||
SITENAME = u'First Contact 2017'
|
||||
SITEURL = 'http://www.first-contact.net/2017/'
|
||||
|
||||
TIMEZONE = 'Europe/Paris'
|
||||
|
||||
DEFAULT_LANG = u'en'
|
||||
|
||||
# Feed generation is usually not desired when developing
|
||||
FEED_ALL_ATOM = 'feeds/all.atom.xml'
|
||||
CATEGORY_FEED_ATOM = None
|
||||
TRANSLATION_FEED_ATOM = None
|
||||
|
||||
# Blogroll
|
||||
LINKS = (('Pelican', 'http://getpelican.com/'),
|
||||
('Python.org', 'http://python.org/'),
|
||||
('Jinja2', 'http://jinja.pocoo.org/'),
|
||||
('Feed', 'http://konstantinzangerle.de/feeds/blog.atom.xml'),
|
||||
('FS Mathematik / Informatik KIT', 'https://fsmi.uni-karlsruhe.de')
|
||||
)
|
||||
|
||||
# Social widget
|
||||
SOCIAL = (('Facebook','http://facebook.com/konstantin.zangerle'),
|
||||
('GitHub','http://github.com/JustKiddingCode'),)
|
||||
|
||||
DEFAULT_PAGINATION = 3
|
||||
|
||||
# Uncomment following line if you want document-relative URLs when developing
|
||||
RELATIVE_URLS = False
|
||||
|
||||
THEME = "themes/fsmi-theme"
|
||||
#THEME = "themes/jesuislibre"
|
||||
DISPLAY_CATEGORIES_ON_MENU = False
|
||||
PAGE_ORDER_BY = 'pageorder'
|
||||
ARTICLE_SAVE_AS = '{category}/{date:%Y}/{date:%b}/{date:%d}/{title}/index.html'
|
||||
ARTICLE_URL = '{category}/{date:%Y}/{date:%b}/{date:%d}/{title}/'
|
||||
PAGE_SAVE_AS = 'pages/{slug}.html'
|
||||
PLUGIN_PATHS = ["plugins"]
|
||||
#PLUGINS = ["render_math"]
|
||||
|
||||
#MENUITEMS=buildNavigation.getNavigation()
|
||||
|
||||
STATIC_PATHS = ['images', 'tut' ]
|
||||
324
themes/fsmi-theme/static/css/main.css
Normal file
@@ -0,0 +1,324 @@
|
||||
h1 {font-size: 1.6em}
|
||||
h2 {font-size: 1.4em}
|
||||
h3 {font-size: 1.2em}
|
||||
h4 {font-size: 1.1em}
|
||||
h5 {font-size: 1.0em}
|
||||
h6 {font-size: 1.0em}
|
||||
|
||||
h1.title {
|
||||
background-color: rgba(0,0,0,0.8);
|
||||
padding: 0.2em 0.5em;
|
||||
color:white;
|
||||
padding-right: 0em;
|
||||
border-radius: 0.3em 0.0em 0.0em 0.3em;
|
||||
}
|
||||
|
||||
#logo {
|
||||
width: 70%;
|
||||
}
|
||||
|
||||
#page-content h1, #page-content h2 {
|
||||
padding: 0.2em 0.5em;
|
||||
width: 100%;
|
||||
color: #fff;
|
||||
}
|
||||
#page-content h1{
|
||||
background-color: rgba(0,0,0,0.9);
|
||||
}
|
||||
#page-content h1 a{
|
||||
color:white;
|
||||
}
|
||||
#page-content h2{
|
||||
background-color: rgba(0,0,0,0.65);
|
||||
|
||||
}
|
||||
/*Style for general links*/
|
||||
a:hover {
|
||||
text-decoration:underline;
|
||||
}
|
||||
|
||||
a ,.navbar-text, #menu-toggle + label{
|
||||
text-decoration:none;
|
||||
color: #2c3e6e;
|
||||
|
||||
}
|
||||
|
||||
|
||||
/*Link styling for header*/
|
||||
a.menulink {
|
||||
text-decoration:none;
|
||||
padding-right:0.2em;
|
||||
padding-left:0.2em;
|
||||
display:inline-block;
|
||||
}
|
||||
a.head:hover, a.head:active, a.menulink:hover, a.menulink:active{
|
||||
|
||||
background-color: black;
|
||||
color:white;
|
||||
text-decoration:none;
|
||||
/*padding:0.1rem;*/
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
#page-title > a:hover{
|
||||
text-decoration: none;
|
||||
}
|
||||
|
||||
html, body {
|
||||
height: 100%;
|
||||
font-size: 15px;
|
||||
font-family: "Gill Sans", "Gill Sans MT", "" sans-serif;
|
||||
background-image:url('/2017/theme/pattern.png');
|
||||
color: black;
|
||||
}
|
||||
|
||||
p {
|
||||
text-align: justify;
|
||||
}
|
||||
|
||||
img {
|
||||
max-width: 100%;
|
||||
}
|
||||
|
||||
#wrap {
|
||||
width: 100%;
|
||||
min-height: 100%;
|
||||
height: auto
|
||||
}
|
||||
|
||||
.pagination {
|
||||
margin-top: auto;
|
||||
margin-bottom: auto;
|
||||
vertical-align: middle;
|
||||
}
|
||||
|
||||
.btn-group {
|
||||
display: inline-block;
|
||||
}
|
||||
/*Navigation*/
|
||||
#navbar {
|
||||
font-size: 1.2rem;
|
||||
color: #333;
|
||||
}
|
||||
|
||||
#navbar .navbar-header {
|
||||
display: flex;
|
||||
flex-direction: row;
|
||||
justify-content: center;
|
||||
align-items: center;
|
||||
flex-wrap: nowrap;
|
||||
text-align: center;
|
||||
}
|
||||
|
||||
#navbar .navbar-header > div {
|
||||
flex: initial;
|
||||
}
|
||||
|
||||
.navbar-text {
|
||||
/*display: inline-block;*/
|
||||
/*width: 80%;*/
|
||||
font-size: 2rem;
|
||||
/*color: #2c3e6e;*/
|
||||
/*text-align: center;*/
|
||||
}
|
||||
|
||||
|
||||
.navbar-img {
|
||||
/*min-width: 9%;*/
|
||||
/*display: inline-block;*/
|
||||
/*text-align: center;*/
|
||||
margin-right: 2rem;
|
||||
}
|
||||
|
||||
#menuitem-list {
|
||||
text-align: center;
|
||||
font-size: 25pt;
|
||||
padding-left: 0em;
|
||||
display: flex;
|
||||
flex-direction: row;
|
||||
justify-content: center ;
|
||||
align-items: flex-start;
|
||||
flex-wrap: wrap;
|
||||
margin-top: 0.5em;
|
||||
}
|
||||
@media all and (max-width: 55rem) {
|
||||
#menuitem-list {
|
||||
flex-direction: column;
|
||||
align-items: center;
|
||||
}
|
||||
}
|
||||
|
||||
.hide {
|
||||
display: none;
|
||||
}
|
||||
|
||||
li.dropdown {
|
||||
/*display: inline-block;*/
|
||||
/*vertical-align: top;*/
|
||||
padding-right:2%;
|
||||
padding-left:2%;
|
||||
list-style-type: none;
|
||||
flex-basis: max-content;
|
||||
}
|
||||
|
||||
|
||||
ul.dropdown-content {
|
||||
font-size:65%;
|
||||
display: none;
|
||||
list-style: none;
|
||||
text-align: left;
|
||||
padding-left: 2em;
|
||||
padding-right: 1em;
|
||||
border:thin solid #333;
|
||||
position:absolute;
|
||||
background-color: rgba(255, 255, 255, 0.95);
|
||||
border-top: none;
|
||||
}
|
||||
#menu-toggle{
|
||||
display: none;
|
||||
}
|
||||
#menu-toggle + label {
|
||||
display: none;
|
||||
text-align: center;
|
||||
font-size:1.5em;
|
||||
border-bottom: dotted 2px darkgrey;
|
||||
border-top: dotted 2px darkgrey;
|
||||
|
||||
|
||||
}
|
||||
@media all and (max-width: 55rem) {
|
||||
ul.dropdown-content{
|
||||
text-align: center;
|
||||
}
|
||||
ul.dropdown-content{
|
||||
position: static;
|
||||
}
|
||||
#menu-toggle + label {
|
||||
display: block;
|
||||
margin-bottom: 0.2em;
|
||||
}
|
||||
#menu-toggle:checked + label{
|
||||
border-bottom: none;
|
||||
}
|
||||
|
||||
#menu-toggle {
|
||||
opacity: 0;
|
||||
display: block;
|
||||
|
||||
}
|
||||
#menu-toggle ~ #menuitem-list {
|
||||
display: none;
|
||||
}
|
||||
#menu-toggle:checked ~ #menuitem-list{
|
||||
display: block;
|
||||
border-bottom: dotted 2px darkgrey;
|
||||
|
||||
}
|
||||
}
|
||||
.dropdown:hover .dropdown-content {
|
||||
display: block;
|
||||
}
|
||||
|
||||
.page-header {
|
||||
margin: 0;
|
||||
margin-bottom: 21px;
|
||||
padding: 0;
|
||||
}
|
||||
|
||||
.article_info {
|
||||
padding: 0.1em 1em;
|
||||
border-radius: 0.3em;
|
||||
background-color: rgba(84, 191, 199, 0.5);
|
||||
}
|
||||
|
||||
.pagination {
|
||||
font-size: 1.2em;
|
||||
}
|
||||
|
||||
td.code {
|
||||
width:100%;
|
||||
}
|
||||
|
||||
.panel-group {
|
||||
width:80%;
|
||||
margin:0 auto;
|
||||
}
|
||||
|
||||
|
||||
.panel, #page-content{
|
||||
background-color: rgba(183, 183, 183, 0.3);
|
||||
border-radius:0.3em 0.3em 0 0;
|
||||
|
||||
}
|
||||
|
||||
.panel{
|
||||
padding:1rem;
|
||||
/*margin-bottom:0.1em;*/
|
||||
/*background-color: #2c3e6e;*/
|
||||
margin-bottom: 1rem;
|
||||
/*border-bottom: 0.2em solid #ddd;*/
|
||||
}
|
||||
|
||||
ul.pagination {
|
||||
text-align: center;
|
||||
font-size: 1.2em;
|
||||
}
|
||||
|
||||
ul.pagination li {
|
||||
list-style: none;
|
||||
display: inline-block;
|
||||
padding: 0 0.2em;
|
||||
}
|
||||
|
||||
.sr-only {
|
||||
display:none;
|
||||
}
|
||||
|
||||
.container {
|
||||
width:90%;
|
||||
margin:0 auto;
|
||||
}
|
||||
|
||||
#page-content {
|
||||
width: 80%;
|
||||
margin: 0 auto;
|
||||
/*background-color: #2c3e6e;*/
|
||||
/*color: #fff;*/
|
||||
padding: 1em;
|
||||
/*border-radius: 0.3em;*/
|
||||
}
|
||||
|
||||
/*#page-content p {*/
|
||||
/*color: #E1FFFF;*/
|
||||
/*}*/
|
||||
|
||||
#page-content .header {
|
||||
border-bottom: 0.1em dotted black;
|
||||
font-weight: bold;
|
||||
}
|
||||
|
||||
#page-content .content {
|
||||
margin-top: 1em;
|
||||
}
|
||||
|
||||
.wall-of-text {
|
||||
line-height: 1.5em;
|
||||
/*column-count: 2;*/
|
||||
column-width: 30em;
|
||||
column-gap: 1.5em;
|
||||
column-rule: dashed 0.1em red;
|
||||
widows: 3;
|
||||
orphans: 3;
|
||||
}
|
||||
|
||||
/*.wall-of-text p {*/
|
||||
/*-webkit-margin-before: 0;*/
|
||||
/*-webkit-margin-after: 0;*/
|
||||
/*}*/
|
||||
|
||||
.wall-of-text :not(p) {
|
||||
column-span: all;
|
||||
}
|
||||
21
themes/fsmi-theme/static/css/sprechstunden.css
Normal file
@@ -0,0 +1,21 @@
|
||||
tr:nth-child(3n+1) td {
|
||||
border-top: 1px dashed;
|
||||
}
|
||||
|
||||
td {
|
||||
border-right: 1px dashed;
|
||||
}
|
||||
|
||||
tr:nth-child(n-1) td {
|
||||
border-left: 1px dashed;
|
||||
}
|
||||
|
||||
|
||||
tr:last-child td {
|
||||
border-bottom: 1px dashed;
|
||||
}
|
||||
|
||||
#page-content{
|
||||
background-color: white;
|
||||
color: black;
|
||||
}
|
||||
BIN
themes/fsmi-theme/static/pattern.png
Normal file
|
After Width: | Height: | Size: 1.2 KiB |
59
themes/fsmi-theme/templates/archives.html
Normal file
@@ -0,0 +1,59 @@
|
||||
{% set name = 'Archives' %}
|
||||
{% set link = 'archives.html' %}
|
||||
{% extends "base.html" %}
|
||||
|
||||
{% block content %}
|
||||
{% if dates %}
|
||||
{# year list #}
|
||||
<div class="panel-group" id="accordion">
|
||||
{% for articles_group_by_year in dates|groupby('date.year')|reverse %}
|
||||
{% set year = articles_group_by_year %}
|
||||
{% set parent = ["Year",year.grouper]|join %}
|
||||
<div class="panel panel-primary">
|
||||
{# year list heading #}
|
||||
<div class="panel-heading panel-title">
|
||||
<a id="{{ parent }}" href="#{{ parent }}">{{ year.grouper }}</a>
|
||||
<a class="accordion-toggle" data-toggle="collapse"
|
||||
{# data-parent="#accordion" #}
|
||||
title="toggle folding"
|
||||
href="#collapseYear{{ year.grouper }}">
|
||||
<span class="badge pull-right">
|
||||
{{ year.list|count }}
|
||||
</span>
|
||||
</a>
|
||||
</div>
|
||||
{# end year list heading #}
|
||||
|
||||
{# year list body #}
|
||||
<div class="panel-collapse collapse in"
|
||||
id="collapseYear{{ year.grouper }}">
|
||||
<div class="panel-body">
|
||||
|
||||
{# month list #}
|
||||
<div class="panel-group" id="accordionYear{{ year.grouper }}">
|
||||
{% for articles_group_by_month in year.list|groupby('date.month')|reverse %}
|
||||
|
||||
{% set month = articles_group_by_month %}
|
||||
|
||||
{% from 'macro.html' import article_panel_list with context %}
|
||||
{% set id = [parent,"Month",month.grouper]|join %}
|
||||
{% set title_left = month.list[0].date|strftime('%B') %}
|
||||
{% set title_right = month.list|count %}
|
||||
{% set entry_list = month.list %}
|
||||
{{ article_panel_list(parent,id,title_left,title_right,entry_list,show_date=True) }}
|
||||
|
||||
{% endfor %}
|
||||
</div>
|
||||
{# end month list #}
|
||||
|
||||
</div>
|
||||
</div>
|
||||
{# end year list body #}
|
||||
|
||||
</div>
|
||||
{% endfor %}
|
||||
</div>
|
||||
{# end year list #}
|
||||
|
||||
{% endif %}
|
||||
{% endblock %}
|
||||
50
themes/fsmi-theme/templates/article.html
Normal file
@@ -0,0 +1,50 @@
|
||||
{% set name = article.title %}
|
||||
{% set link = article.url %}
|
||||
{% extends "base.html" %}
|
||||
|
||||
{% block content %}
|
||||
{% from 'macro.html' import article_info with context %}
|
||||
{% from 'macro.html' import genurl with context %}
|
||||
|
||||
{{ article_info(article) }}
|
||||
<hr/>
|
||||
|
||||
<div id="article_content">
|
||||
{{ article.content }}
|
||||
</div>
|
||||
|
||||
<hr/>
|
||||
{% if article.related_posts %}
|
||||
{% from 'macro.html' import article_panel_list with context %}
|
||||
{% set articles = article.related_posts %}
|
||||
{% set parent = '' %}
|
||||
{% set id = "collapseRelated" %}
|
||||
{% set title_left = "Verwandte Posts" %}
|
||||
{% set title_right = articles|count %}
|
||||
{% set entry_list = articles %}
|
||||
{{ article_panel_list(parent,id,title_left,title_right,entry_list) }}
|
||||
{% endif %}
|
||||
|
||||
{% for temp in dates %}
|
||||
{% if temp.url == article.url %}
|
||||
{% if not loop.first %}
|
||||
{% set prev = dates[loop.index0-1] %}
|
||||
{% endif %}
|
||||
{% if not loop.last %}
|
||||
{% set next = dates[loop.index0+1] %}
|
||||
{% endif %}
|
||||
<ul class="pager">
|
||||
<li class="previous{% if not prev %} disabled{% endif %}">
|
||||
<a {% if prev %}href="{{ genurl( prev.url, force=True ) }}"{% endif %}>
|
||||
« Neuer</a>
|
||||
</li>
|
||||
<li class="next{% if not next %} disabled{% endif %}">
|
||||
<a {% if next %}href="{{ genurl( next.url, force=True ) }}"{% endif %}>
|
||||
Älter »</a>
|
||||
</li>
|
||||
</ul>
|
||||
{% endif %}
|
||||
{% endfor %}
|
||||
|
||||
|
||||
{% endblock %}
|
||||
15
themes/fsmi-theme/templates/author.html
Normal file
@@ -0,0 +1,15 @@
|
||||
{% set name = author %}
|
||||
{% set link = ["author/",author,".html"]|join %}
|
||||
{% extends "base.html" %}
|
||||
|
||||
{% block content %}
|
||||
|
||||
{% from 'macro.html' import article_panel_list with context %}
|
||||
{% set parent = '' %}
|
||||
{% set id = ["collapse",author]|join %}
|
||||
{% set title_left = author %}
|
||||
{% set title_right = articles|count %}
|
||||
{% set entry_list = articles %}
|
||||
{{ article_panel_list(parent,id,title_left,title_right,entry_list) }}
|
||||
|
||||
{% endblock %}
|
||||
55
themes/fsmi-theme/templates/base.html
Normal file
@@ -0,0 +1,55 @@
|
||||
{% from 'macro.html' import genurl with context %}
|
||||
{% set link = ['/',link]|join %}
|
||||
<!DOCTYPE html>
|
||||
<html lang="{{ DEFAULT_LANG }}">
|
||||
<head>
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1">
|
||||
<meta http-equiv="Content-type" content="text/html; charset=utf-8" />
|
||||
<meta name="description" content="{{ SITENAME }}">
|
||||
<meta name="author" content="{{ AUTHOR }}">
|
||||
{% if FAVICON and FAVICON_TYPE %}
|
||||
<link rel="icon" type="image/{{ FAVICON_TYPE }}" href="{{ genurl( FAVICON ) }}">
|
||||
{% endif %}
|
||||
|
||||
{% from 'macro.html' import pagetitle with context %}
|
||||
{{ pagetitle(name) }}
|
||||
|
||||
<link rel="stylesheet" href="{{ genurl( '/theme/css/main.css' ) }}">
|
||||
|
||||
{% if output_file == 'sprechstunden.html '%}
|
||||
<link rel="stylesheet" href="{{ genurl( '/theme/css/sprechstunden.css' ) }}">
|
||||
{% endif %}
|
||||
</head>
|
||||
<body>
|
||||
<div class="container" id="wrap">
|
||||
{% from 'macro.html' import navbar with context %}
|
||||
{{ navbar(link) }}
|
||||
<div>
|
||||
{% block left_sidebar %}{% endblock %}
|
||||
</div>
|
||||
|
||||
<div>
|
||||
<!-- <div class="row">
|
||||
{% from 'macro.html' import pageheader with context %}
|
||||
{{ pageheader(name,link) }}
|
||||
</div> -->
|
||||
<div>
|
||||
{% block content %}{% endblock %}
|
||||
</div>
|
||||
|
||||
<div>
|
||||
{% block pagefooter %}{% endblock %}
|
||||
</div>
|
||||
|
||||
</div>
|
||||
|
||||
<div>
|
||||
{% block right_sidebar %}{% endblock %}
|
||||
</div>
|
||||
</div>
|
||||
|
||||
{% from 'macro.html' import footer with context %}
|
||||
{{ footer() }}
|
||||
|
||||
</body>
|
||||
</html>
|
||||
36
themes/fsmi-theme/templates/categories.html
Normal file
@@ -0,0 +1,36 @@
|
||||
{% set name = "Categories" %}
|
||||
{% set link = "categories.html" %}
|
||||
|
||||
{% extends "base.html" %}
|
||||
|
||||
{% block content %}
|
||||
{% if categories %}
|
||||
<p>
|
||||
{% from 'macro.html' import taglist %}
|
||||
{{ taglist(categories, "#", "") }}
|
||||
</p>
|
||||
|
||||
<div class="panel-group" id="accordion">
|
||||
{% for category, articles in categories|sort %}
|
||||
|
||||
{% from "macro.html" import article_panel_list with context %}
|
||||
{% set parent = "accordion" %}
|
||||
{% set id = category %}
|
||||
{% set title_left = category %}
|
||||
{% set title_left_link = "/category/%s.html" % (category) %}
|
||||
{% set title_right = articles|count %}
|
||||
{% set entry_list = articles %}
|
||||
{{ article_panel_list(
|
||||
parent=parent,
|
||||
id=id,
|
||||
title_left=title_left,
|
||||
title_left_link=title_left_link,
|
||||
title_right=title_right,
|
||||
entry_list=entry_list,
|
||||
) }}
|
||||
|
||||
{% endfor %}
|
||||
</div>
|
||||
|
||||
{% endif %}
|
||||
{% endblock %}
|
||||
13
themes/fsmi-theme/templates/category.html
Normal file
@@ -0,0 +1,13 @@
|
||||
{% set name = ["Category: ",category]|join %}
|
||||
{% set link = ["category/",category,".html"]|join %}
|
||||
{% extends "base.html" %}
|
||||
|
||||
{% block content %}
|
||||
{% from 'macro.html' import article_panel_list with context %}
|
||||
{% set parent = '' %}
|
||||
{% set id = category %}
|
||||
{% set title_left = category %}
|
||||
{% set title_right = articles|count %}
|
||||
{% set entry_list = articles %}
|
||||
{{ article_panel_list(parent,id,title_left,title_right,entry_list) }}
|
||||
{% endblock %}
|
||||
324
themes/fsmi-theme/templates/css/main.css
Normal file
@@ -0,0 +1,324 @@
|
||||
h1 {font-size: 1.6em}
|
||||
h2 {font-size: 1.4em}
|
||||
h3 {font-size: 1.2em}
|
||||
h4 {font-size: 1.1em}
|
||||
h5 {font-size: 1.0em}
|
||||
h6 {font-size: 1.0em}
|
||||
|
||||
h1.title {
|
||||
background-color: rgba(0,0,0,0.8);
|
||||
padding: 0.2em 0.5em;
|
||||
color:white;
|
||||
padding-right: 0em;
|
||||
border-radius: 0.3em 0.0em 0.0em 0.3em;
|
||||
}
|
||||
|
||||
#logo {
|
||||
width: 70%;
|
||||
}
|
||||
|
||||
#page-content h1, #page-content h2 {
|
||||
padding: 0.2em 0.5em;
|
||||
width: 100%;
|
||||
color: #fff;
|
||||
}
|
||||
#page-content h1{
|
||||
background-color: rgba(0,0,0,0.9);
|
||||
}
|
||||
#page-content h1 a{
|
||||
color:white;
|
||||
}
|
||||
#page-content h2{
|
||||
background-color: rgba(0,0,0,0.65);
|
||||
|
||||
}
|
||||
/*Style for general links*/
|
||||
a:hover {
|
||||
text-decoration:underline;
|
||||
}
|
||||
|
||||
a ,.navbar-text, #menu-toggle + label{
|
||||
text-decoration:none;
|
||||
color: #2c3e6e;
|
||||
|
||||
}
|
||||
|
||||
|
||||
/*Link styling for header*/
|
||||
a.menulink {
|
||||
text-decoration:none;
|
||||
padding-right:0.2em;
|
||||
padding-left:0.2em;
|
||||
display:inline-block;
|
||||
}
|
||||
a.head:hover, a.head:active, a.menulink:hover, a.menulink:active{
|
||||
|
||||
background-color: black;
|
||||
color:white;
|
||||
text-decoration:none;
|
||||
/*padding:0.1rem;*/
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
#page-title > a:hover{
|
||||
text-decoration: none;
|
||||
}
|
||||
|
||||
html, body {
|
||||
height: 100%;
|
||||
font-size: 15px;
|
||||
font-family: "Gill Sans", "Gill Sans MT", "" sans-serif;
|
||||
background-image:url('/2017/theme/pattern.png'));
|
||||
color: black;
|
||||
}
|
||||
|
||||
p {
|
||||
text-align: justify;
|
||||
}
|
||||
|
||||
img {
|
||||
max-width: 100%;
|
||||
}
|
||||
|
||||
#wrap {
|
||||
width: 100%;
|
||||
min-height: 100%;
|
||||
height: auto
|
||||
}
|
||||
|
||||
.pagination {
|
||||
margin-top: auto;
|
||||
margin-bottom: auto;
|
||||
vertical-align: middle;
|
||||
}
|
||||
|
||||
.btn-group {
|
||||
display: inline-block;
|
||||
}
|
||||
/*Navigation*/
|
||||
#navbar {
|
||||
font-size: 1.2rem;
|
||||
color: #333;
|
||||
}
|
||||
|
||||
#navbar .navbar-header {
|
||||
display: flex;
|
||||
flex-direction: row;
|
||||
justify-content: center;
|
||||
align-items: center;
|
||||
flex-wrap: nowrap;
|
||||
text-align: center;
|
||||
}
|
||||
|
||||
#navbar .navbar-header > div {
|
||||
flex: initial;
|
||||
}
|
||||
|
||||
.navbar-text {
|
||||
/*display: inline-block;*/
|
||||
/*width: 80%;*/
|
||||
font-size: 2rem;
|
||||
/*color: #2c3e6e;*/
|
||||
/*text-align: center;*/
|
||||
}
|
||||
|
||||
|
||||
.navbar-img {
|
||||
/*min-width: 9%;*/
|
||||
/*display: inline-block;*/
|
||||
/*text-align: center;*/
|
||||
margin-right: 2rem;
|
||||
}
|
||||
|
||||
#menuitem-list {
|
||||
text-align: center;
|
||||
font-size: 25pt;
|
||||
padding-left: 0em;
|
||||
display: flex;
|
||||
flex-direction: row;
|
||||
justify-content: center ;
|
||||
align-items: flex-start;
|
||||
flex-wrap: wrap;
|
||||
margin-top: 0.5em;
|
||||
}
|
||||
@media all and (max-width: 55rem) {
|
||||
#menuitem-list {
|
||||
flex-direction: column;
|
||||
align-items: center;
|
||||
}
|
||||
}
|
||||
|
||||
.hide {
|
||||
display: none;
|
||||
}
|
||||
|
||||
li.dropdown {
|
||||
/*display: inline-block;*/
|
||||
/*vertical-align: top;*/
|
||||
padding-right:2%;
|
||||
padding-left:2%;
|
||||
list-style-type: none;
|
||||
flex-basis: max-content;
|
||||
}
|
||||
|
||||
|
||||
ul.dropdown-content {
|
||||
font-size:65%;
|
||||
display: none;
|
||||
list-style: none;
|
||||
text-align: left;
|
||||
padding-left: 2em;
|
||||
padding-right: 1em;
|
||||
border:thin solid #333;
|
||||
position:absolute;
|
||||
background-color: rgba(255, 255, 255, 0.95);
|
||||
border-top: none;
|
||||
}
|
||||
#menu-toggle{
|
||||
display: none;
|
||||
}
|
||||
#menu-toggle + label {
|
||||
display: none;
|
||||
text-align: center;
|
||||
font-size:1.5em;
|
||||
border-bottom: dotted 2px darkgrey;
|
||||
border-top: dotted 2px darkgrey;
|
||||
|
||||
|
||||
}
|
||||
@media all and (max-width: 55rem) {
|
||||
ul.dropdown-content{
|
||||
text-align: center;
|
||||
}
|
||||
ul.dropdown-content{
|
||||
position: static;
|
||||
}
|
||||
#menu-toggle + label {
|
||||
display: block;
|
||||
margin-bottom: 0.2em;
|
||||
}
|
||||
#menu-toggle:checked + label{
|
||||
border-bottom: none;
|
||||
}
|
||||
|
||||
#menu-toggle {
|
||||
opacity: 0;
|
||||
display: block;
|
||||
|
||||
}
|
||||
#menu-toggle ~ #menuitem-list {
|
||||
display: none;
|
||||
}
|
||||
#menu-toggle:checked ~ #menuitem-list{
|
||||
display: block;
|
||||
border-bottom: dotted 2px darkgrey;
|
||||
|
||||
}
|
||||
}
|
||||
.dropdown:hover .dropdown-content {
|
||||
display: block;
|
||||
}
|
||||
|
||||
.page-header {
|
||||
margin: 0;
|
||||
margin-bottom: 21px;
|
||||
padding: 0;
|
||||
}
|
||||
|
||||
.article_info {
|
||||
padding: 0.1em 1em;
|
||||
border-radius: 0.3em;
|
||||
background-color: rgba(84, 191, 199, 0.5);
|
||||
}
|
||||
|
||||
.pagination {
|
||||
font-size: 1.2em;
|
||||
}
|
||||
|
||||
td.code {
|
||||
width:100%;
|
||||
}
|
||||
|
||||
.panel-group {
|
||||
width:80%;
|
||||
margin:0 auto;
|
||||
}
|
||||
|
||||
|
||||
.panel, #page-content{
|
||||
background-color: rgba(183, 183, 183, 0.3);
|
||||
border-radius:0.3em 0.3em 0 0;
|
||||
|
||||
}
|
||||
|
||||
.panel{
|
||||
padding:1rem;
|
||||
/*margin-bottom:0.1em;*/
|
||||
/*background-color: #2c3e6e;*/
|
||||
margin-bottom: 1rem;
|
||||
/*border-bottom: 0.2em solid #ddd;*/
|
||||
}
|
||||
|
||||
ul.pagination {
|
||||
text-align: center;
|
||||
font-size: 1.2em;
|
||||
}
|
||||
|
||||
ul.pagination li {
|
||||
list-style: none;
|
||||
display: inline-block;
|
||||
padding: 0 0.2em;
|
||||
}
|
||||
|
||||
.sr-only {
|
||||
display:none;
|
||||
}
|
||||
|
||||
.container {
|
||||
width:90%;
|
||||
margin:0 auto;
|
||||
}
|
||||
|
||||
#page-content {
|
||||
width: 80%;
|
||||
margin: 0 auto;
|
||||
/*background-color: #2c3e6e;*/
|
||||
/*color: #fff;*/
|
||||
padding: 1em;
|
||||
/*border-radius: 0.3em;*/
|
||||
}
|
||||
|
||||
/*#page-content p {*/
|
||||
/*color: #E1FFFF;*/
|
||||
/*}*/
|
||||
|
||||
#page-content .header {
|
||||
border-bottom: 0.1em dotted black;
|
||||
font-weight: bold;
|
||||
}
|
||||
|
||||
#page-content .content {
|
||||
margin-top: 1em;
|
||||
}
|
||||
|
||||
.wall-of-text {
|
||||
line-height: 1.5em;
|
||||
/*column-count: 2;*/
|
||||
column-width: 30em;
|
||||
column-gap: 1.5em;
|
||||
column-rule: dashed 0.1em red;
|
||||
widows: 3;
|
||||
orphans: 3;
|
||||
}
|
||||
|
||||
/*.wall-of-text p {*/
|
||||
/*-webkit-margin-before: 0;*/
|
||||
/*-webkit-margin-after: 0;*/
|
||||
/*}*/
|
||||
|
||||
.wall-of-text :not(p) {
|
||||
column-span: all;
|
||||
}
|
||||
45
themes/fsmi-theme/templates/index.html
Normal file
@@ -0,0 +1,45 @@
|
||||
{% set name = '' %}
|
||||
{% set link = '' %}
|
||||
|
||||
{% extends "base.html" %}
|
||||
|
||||
{% block content %}
|
||||
{% from 'macro.html' import genurl with context %}
|
||||
|
||||
{% if articles %}
|
||||
{% if articles_page %}
|
||||
{% set articles = articles_page.object_list %}
|
||||
{% endif %}
|
||||
|
||||
<div class="panel-group">
|
||||
{% for article in articles %}
|
||||
{% set year = article.date|strftime('%Y') %}
|
||||
{% set month = article.date|strftime('%B') %}
|
||||
{% set month_index = article.date|strftime('%m') %}
|
||||
{% set article_url = genurl( article.url, force=True ) %}
|
||||
|
||||
<div class="panel">
|
||||
<a href="{{ article_url }}"><h1 class="title">
|
||||
{{- article.title -}}
|
||||
</h1></a>
|
||||
<div>
|
||||
{% from 'macro.html' import article_info with context %}
|
||||
{{ article_info(article) }}
|
||||
{% if article.summary %}
|
||||
{{- article.summary -}}
|
||||
{% endif %}
|
||||
</div>
|
||||
<div class="btn-group">
|
||||
<a href="{{ article_url }}" title="permalink / read more">mehr...</a>
|
||||
</div>
|
||||
</div>
|
||||
{% endfor %}
|
||||
</div>
|
||||
{% endif %}
|
||||
|
||||
{% endblock content %}
|
||||
|
||||
{% block pagefooter %}
|
||||
{% from 'macro.html' import pagination with context %}
|
||||
{{ pagination() }}
|
||||
{% endblock %}
|
||||
219
themes/fsmi-theme/templates/macro.html
Normal file
@@ -0,0 +1,219 @@
|
||||
{% macro genurl(string, force=False) %}
|
||||
{% if (force or
|
||||
( string.startswith('/') and not string.startswith('//') )) %}
|
||||
{% set url = '/'.join([SITEURL.rstrip('/'),string.lstrip('/')]) %}
|
||||
{{- url -}}
|
||||
{% else %}
|
||||
{% set url = '/'.join([SITEURL, string]) %}
|
||||
{{- url -}}
|
||||
{% endif %}
|
||||
{% endmacro %}
|
||||
|
||||
{% macro newtab(string, force=False) %}
|
||||
{% if ( string.startswith('http://') or
|
||||
string.startswith('https://')) %}
|
||||
target="_blank"
|
||||
{% endif %}
|
||||
{% endmacro %}
|
||||
|
||||
{% macro article_panel_list(parent='', id='', title_left='', title_right='', entry_list=[], show_date=False, title_left_link='') %}
|
||||
{% if not title_left_link %}
|
||||
{% set title_left_link = "#%s" % id %}
|
||||
{% endif %}
|
||||
|
||||
<div class="panel panel-primary">
|
||||
<div class="panel-heading panel-title">
|
||||
<a id="{{ id }}" href="{{ genurl( title_left_link ) }}">
|
||||
{{- title_left -}}
|
||||
</a>
|
||||
</div>
|
||||
|
||||
<div class="panel-body hidden"></div>
|
||||
|
||||
<ul class="list-group">
|
||||
<div class="panel-collapse collapse in" id="{{ id }}collapse">
|
||||
{% for article in entry_list %}
|
||||
<a href="{{ genurl( article.url, force=True ) }}">
|
||||
<li class="list-group-item">
|
||||
{% if show_date %}
|
||||
{{- article.date|strftime("%m-%d") -}}
|
||||
<b> · </b>
|
||||
{% endif %}
|
||||
{{- article.title -}}
|
||||
</li>
|
||||
</a>
|
||||
{% endfor %}
|
||||
</div>
|
||||
</ul>
|
||||
|
||||
</div>
|
||||
{% endmacro %}
|
||||
|
||||
{% macro pagetitle(name) %}
|
||||
{% if name and name != '' %}
|
||||
<title>{{ name }} · {{ SITENAME }}</title>
|
||||
{% else %}
|
||||
<title>{{ SITENAME }}</title>
|
||||
{% endif %}
|
||||
{% endmacro %}
|
||||
|
||||
{% macro pageheader(name, link) %}
|
||||
{% if name and name != '' %}
|
||||
<div class="page-header">
|
||||
{% if link %}
|
||||
<h1><a href="{{ genurl( link ) }}">{{ name }}</a></h1>
|
||||
{% else %}
|
||||
<h1>{{ name }}</h1>
|
||||
{% endif %}
|
||||
</div>
|
||||
{% endif %}
|
||||
{% endmacro %}
|
||||
|
||||
{% macro navbar(link) %}
|
||||
|
||||
<nav id="navbar" role="navigation">
|
||||
<div class="navbar-header">
|
||||
<div class="navbar-img">
|
||||
<a class="navbar-brand" href="{{ genurl('' ) }}">
|
||||
<img src="{{ SITEURL }}/images/logo.png" alt="{{ SITENAME }}" id="logo" />
|
||||
</a>
|
||||
</div>
|
||||
{%if SHOW_PAGE_TITLE %}
|
||||
<div class="navbar-text">
|
||||
<h1 id="page-title">
|
||||
<a href="{{ genurl( SITEURL ) }}">
|
||||
{{ SITENAME }}
|
||||
</a>
|
||||
</h1>
|
||||
</div>
|
||||
{% endif %}
|
||||
</div>
|
||||
|
||||
<input type="checkbox" id="menu-toggle" name="menu-toggle" checked="false"/>
|
||||
<label for="menu-toggle">hide/show menu</label>
|
||||
|
||||
<ul id="menuitem-list">
|
||||
{% for p in PAGES %}
|
||||
{% if p.url is string %}
|
||||
{% if p.title != 'Search' %}
|
||||
<li class="dropdown">
|
||||
<a class="menulink head {% if p.url == page %}active{% endif %}" href="{{ genurl( p.url ) }}" {{ newtab(p.url) }}>{{ p.title }}</a>
|
||||
</li>
|
||||
{% endif %}
|
||||
{% elif p.url is iterable %}
|
||||
<li class="dropdown">
|
||||
<!-- FIXME Selecting a submenu link does not set the head link active, need a custom jinja test for that //-->
|
||||
<a href="#" class="dropdown-toggle menulink head {% if p.url == page %}active{% endif %}" data-toggle="dropdown">
|
||||
{{- title }}
|
||||
</a>
|
||||
<ul class="dropdown-content" role="menu">
|
||||
{% for title,item_url in url %}
|
||||
<li>
|
||||
<a class="menulink" href="{{ genurl( item_url ) }}" {{ newtab(item_url) }}>
|
||||
{{ title }}
|
||||
</a>
|
||||
</li>
|
||||
{% endfor %}
|
||||
</ul>
|
||||
</li>
|
||||
{% endif %}
|
||||
{% endfor %}
|
||||
</ul>
|
||||
</nav>
|
||||
{% endmacro %}
|
||||
|
||||
{% macro footer() %}
|
||||
<nav id="footer" class="navbar navbar-default">
|
||||
<div class="container">
|
||||
<p id="footer-text" class="text-center">
|
||||
Built with Pelican
|
||||
</p>
|
||||
</div>
|
||||
</div>
|
||||
</nav>
|
||||
{% endmacro %}
|
||||
|
||||
{% macro pagination() %}
|
||||
{% if DEFAULT_PAGINATION %}
|
||||
<ul class="pagination">
|
||||
|
||||
{% if articles_page.has_previous() %}
|
||||
<li>
|
||||
{% if articles_page.previous_page_number() == 1 %}
|
||||
<a href="{{ genurl( page_name + '.html', force=True ) }}">«</a>
|
||||
{% else %}
|
||||
<a href="{{ genurl( page_name + articles_page.previous_page_number()|string + '.html' ) }}">«</a>
|
||||
{% endif %}
|
||||
</li>
|
||||
{% else %}
|
||||
<li class="disabled">
|
||||
<a>«</a>
|
||||
</li>
|
||||
{% endif %}
|
||||
|
||||
{% for num in articles_paginator.page_range %}
|
||||
{% if articles_page.number != num %}
|
||||
<li>
|
||||
{% if num == 1 %}
|
||||
{% set page_link = page_name+'.html' %}
|
||||
{% else %}
|
||||
{% set page_link = page_name+num|string+'.html' %}
|
||||
{% endif %}
|
||||
<a href="{{ genurl( page_link, force=True ) }}">
|
||||
{{- num }}<span class="sr-only">(current)</span></a>
|
||||
</li>
|
||||
{% else %}
|
||||
<li class="active">
|
||||
<a>{{- num }}<span class="sr-only">(current)</span></a>
|
||||
</li>
|
||||
{% endif %}
|
||||
{% endfor %}
|
||||
|
||||
{% if articles_page.has_next() %}
|
||||
<li>
|
||||
<a href="{{ genurl( page_name + articles_page.next_page_number()|string + '.html' ) }}">»</a>
|
||||
</li>
|
||||
{% else %}
|
||||
<li class="disabled">
|
||||
<a>»</a>
|
||||
</li>
|
||||
{% endif %}
|
||||
|
||||
</ul>
|
||||
{% endif %}
|
||||
{% endmacro %}
|
||||
|
||||
{% macro article_info(article) %}
|
||||
<span class="article_info">
|
||||
{% if article.tags %}
|
||||
<b> · </b>
|
||||
{% for tag in article.tags %}
|
||||
<a class="label label-primary"
|
||||
href="{{ genurl( '/tag/' + tag|string + '.html' ) }}">
|
||||
{{- tag -}}
|
||||
</a>
|
||||
{% endfor %}
|
||||
{% endif %}
|
||||
<!--<span class="glyphicon glyphicon-calendar"></span>-->
|
||||
{% if article.locale_date %}
|
||||
{% set year = article.date|strftime('%Y') %}
|
||||
{% set month = article.date|strftime('%m') %}
|
||||
{% set day = article.date|strftime('%d') %}
|
||||
<a href="{{ genurl( '/archives.html#Year' + year ) }}">{{ year }}</a>
|
||||
{{- '-' -}}
|
||||
<a href="{{ genurl( '/archives.html#Year' + year + 'Month' + month ) }}">{{ month }}</a>
|
||||
{{- '-' -}}
|
||||
<a href="{{ genurl( '/archives.html#Year' + year + 'Month' + month ) }}">{{ day }}</a>
|
||||
|
||||
{% endif %}
|
||||
<!--<span class="glyphicon glyphicon-user"></span>-->
|
||||
</span>
|
||||
{% endmacro %}
|
||||
|
||||
{% macro taglist(list,prefix='',suffix='') %}
|
||||
{% for tag, articles in list|sort %}
|
||||
<a class="label label-primary"
|
||||
href="{{prefix}}{{tag}}{{suffix}}">
|
||||
{{- tag }} {{ articles|count }}</a>
|
||||
{% endfor %}
|
||||
{% endmacro %}
|
||||
14
themes/fsmi-theme/templates/page.html
Normal file
@@ -0,0 +1,14 @@
|
||||
{% set name = page.title %}
|
||||
{% set link = page.url %}
|
||||
{% extends "base.html" %}
|
||||
|
||||
{% block content %}
|
||||
<div id="page-content">
|
||||
<div class="header">
|
||||
{{ page.title }}
|
||||
</div>
|
||||
<div class="content wall-of-text">
|
||||
{{ page.content }}
|
||||
</div>
|
||||
</div>
|
||||
{% endblock %}
|
||||
13
themes/fsmi-theme/templates/tag.html
Normal file
@@ -0,0 +1,13 @@
|
||||
{% set name = ["Tag: ",tag]|join %}
|
||||
{% set link = ["tag/",tag,".html"]|join %}
|
||||
{% extends "base.html" %}
|
||||
|
||||
{% block content %}
|
||||
{% from 'macro.html' import article_panel_list with context %}
|
||||
{% set parent = '' %}
|
||||
{% set id = tag %}
|
||||
{% set title_left = tag %}
|
||||
{% set title_right = articles|count %}
|
||||
{% set entry_list = articles %}
|
||||
{{ article_panel_list(parent,id,title_left,title_right,entry_list) }}
|
||||
{% endblock %}
|
||||
12
themes/fsmi-theme/templates/taglist.html
Normal file
@@ -0,0 +1,12 @@
|
||||
{% set name = 'Tag List' %}
|
||||
{% set link = 'taglist.html' %}
|
||||
{% extends "base.html" %}
|
||||
|
||||
{% block content %}
|
||||
{% if tags %}
|
||||
|
||||
{% from 'macro.html' import taglist %}
|
||||
{{ taglist('tag',tags) }}
|
||||
|
||||
{% endif %}
|
||||
{% endblock %}
|
||||
35
themes/fsmi-theme/templates/tags.html
Normal file
@@ -0,0 +1,35 @@
|
||||
{% set name = "Tags" %}
|
||||
{% set link = "tags.html" %}
|
||||
{% extends "base.html" %}
|
||||
|
||||
{% block content %}
|
||||
{% if tags %}
|
||||
<p>
|
||||
{% from "macro.html" import taglist %}
|
||||
{{ taglist(tags, "#", "") }}
|
||||
</p>
|
||||
|
||||
<div class="panel-group" id="accordion">
|
||||
{% for tag, articles in tags|sort %}
|
||||
|
||||
{% from "macro.html" import article_panel_list with context %}
|
||||
{% set parent = "accordion" %}
|
||||
{% set id = tag %}
|
||||
{% set title_left = tag %}
|
||||
{% set title_left_link = "/tag/%s.html" % (tag) %}
|
||||
{% set title_right = articles|count %}
|
||||
{% set entry_list = articles %}
|
||||
{{ article_panel_list(
|
||||
parent=parent,
|
||||
id=id,
|
||||
title_left=title_left,
|
||||
title_left_link=title_left_link,
|
||||
title_right=title_right,
|
||||
entry_list=entry_list,
|
||||
) }}
|
||||
|
||||
{% endfor %}
|
||||
</div>
|
||||
|
||||
{% endif %}
|
||||
{% endblock %}
|
||||
8
themes/fsmi-theme/templates/translations.html
Normal file
@@ -0,0 +1,8 @@
|
||||
{% macro translations_for(article) %}
|
||||
{% if article.translations %}
|
||||
Translations:
|
||||
{% for translation in article.translations %}
|
||||
<a href="{{ genurl( translation.url, force=True ) }}">{{ translation.lang }}</a>
|
||||
{% endfor %}
|
||||
{% endif %}
|
||||
{% endmacro %}
|
||||
3
themes/fsmi-theme/templates/twitter.html
Normal file
@@ -0,0 +1,3 @@
|
||||
{% if TWITTER_USERNAME %}
|
||||
<a href="http://twitter.com/share" class="twitter-share-button" data-count="horizontal" data-via="{{TWITTER_USERNAME}}">Tweet</a><script type="text/javascript" src="http://platform.twitter.com/widgets.js"></script>
|
||||
{% endif %}
|
||||