Primo commit - base sito funzionante?
This commit is contained in:
parent
7abb0ade2e
commit
71f4b86bde
|
@ -1 +1,2 @@
|
||||||
venv
|
venv
|
||||||
|
__pycache__
|
||||||
|
|
|
@ -0,0 +1,12 @@
|
||||||
|
[submodule "conference/buruma"]
|
||||||
|
path = conference/buruma
|
||||||
|
url = https://github.com/ivanhercaz/buruma.git
|
||||||
|
[submodule "conference/plugins"]
|
||||||
|
path = conference/plugins
|
||||||
|
url = https://github.com/getpelican/pelican-plugins
|
||||||
|
[submodule "test/plugins"]
|
||||||
|
path = test/plugins
|
||||||
|
url = https://github.com/getpelican/pelican-plugins
|
||||||
|
[submodule "conference/other-plugins/pelican-redirect"]
|
||||||
|
path = conference/other-plugins/pelican-redirect
|
||||||
|
url = https://github.com/slinkp/pelican-redirect
|
|
@ -0,0 +1,75 @@
|
||||||
|
PY?=python3
|
||||||
|
PELICAN?=pelican
|
||||||
|
PELICANOPTS=
|
||||||
|
|
||||||
|
BASEDIR=$(CURDIR)
|
||||||
|
INPUTDIR=$(BASEDIR)/content
|
||||||
|
OUTPUTDIR=$(BASEDIR)/output
|
||||||
|
CONFFILE=$(BASEDIR)/pelicanconf.py
|
||||||
|
PUBLISHCONF=$(BASEDIR)/publishconf.py
|
||||||
|
|
||||||
|
|
||||||
|
DEBUG ?= 0
|
||||||
|
ifeq ($(DEBUG), 1)
|
||||||
|
PELICANOPTS += -D
|
||||||
|
endif
|
||||||
|
|
||||||
|
RELATIVE ?= 0
|
||||||
|
ifeq ($(RELATIVE), 1)
|
||||||
|
PELICANOPTS += --relative-urls
|
||||||
|
endif
|
||||||
|
|
||||||
|
SERVER ?= "0.0.0.0"
|
||||||
|
|
||||||
|
PORT ?= 0
|
||||||
|
ifneq ($(PORT), 0)
|
||||||
|
PELICANOPTS += -p $(PORT)
|
||||||
|
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 ' '
|
||||||
|
@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:
|
||||||
|
"$(PELICAN)" -l "$(INPUTDIR)" -o "$(OUTPUTDIR)" -s "$(CONFFILE)" $(PELICANOPTS)
|
||||||
|
|
||||||
|
serve-global:
|
||||||
|
"$(PELICAN)" -l "$(INPUTDIR)" -o "$(OUTPUTDIR)" -s "$(CONFFILE)" $(PELICANOPTS) -b $(SERVER)
|
||||||
|
|
||||||
|
devserver:
|
||||||
|
"$(PELICAN)" -lr "$(INPUTDIR)" -o "$(OUTPUTDIR)" -s "$(CONFFILE)" $(PELICANOPTS)
|
||||||
|
|
||||||
|
devserver-global:
|
||||||
|
$(PELICAN) -lr $(INPUTDIR) -o $(OUTPUTDIR) -s $(CONFFILE) $(PELICANOPTS) -b 0.0.0.0
|
||||||
|
|
||||||
|
publish:
|
||||||
|
"$(PELICAN)" "$(INPUTDIR)" -o "$(OUTPUTDIR)" -s "$(PUBLISHCONF)" $(PELICANOPTS)
|
||||||
|
|
||||||
|
rsync_upload: publish
|
||||||
|
rsync -avz $(OUTPUTDIR)/ $(SSH_HOST=:$(SSH_TARGET_DIR)
|
||||||
|
|
||||||
|
.PHONY: html help clean regenerate serve serve-global devserver publish
|
|
@ -0,0 +1,35 @@
|
||||||
|
title: Settima Conferenza Italiana - LibreItalia - 2020
|
||||||
|
slug: 2020
|
||||||
|
alias: /
|
||||||
|
|
||||||
|
# La LibreItaliaConf in breve #
|
||||||
|
|
||||||
|
<div class="row" style="text-align: center;">
|
||||||
|
<div style="padding: 5px 0px"><i style="font-size: 24pt;" class="far fa-clock"></i><br/>
|
||||||
|
Sabato 19 dicembre 2020<br/>dalle ore 9.30 alle ore 18.00</div>
|
||||||
|
|
||||||
|
<div style="padding: 5px 0px"><i style="font-size: 24pt;" class="fas fa-map-marked-alt"></i><br/>
|
||||||
|
Online</div>
|
||||||
|
|
||||||
|
<div style="padding: 5px 0px"><i style="font-size: 24pt;" class="fas fa-users"></i><br/>
|
||||||
|
È aperta al pubblico</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
# Programma ufficiale #
|
||||||
|
|
||||||
|
**NOTA BENE**: il programma definitivo della giornata non è ancora stato
|
||||||
|
definito. Questa pagina sarà aggiornata quando il programma definitivo sarà
|
||||||
|
disponibile.
|
||||||
|
|
||||||
|
Per il momento, ecco il programma di massima:
|
||||||
|
|
||||||
|
|||
|
||||||
|
|:-:|:-|
|
||||||
|
|| **Mattina** |
|
||||||
|
| 09:30 - 10:00 | Introduzione, accoglienza, *caffè digitale* |
|
||||||
|
| 10:00 - 10:30 | Saluti, rendicontazione, prospettive - LibreItalia |
|
||||||
|
| 10:30 - 13:00 | Interventi |
|
||||||
|
|| **Pomeriggio** |
|
||||||
|
| 14:00 - 16:30 | Tavola rotonda - Prima Parte |
|
||||||
|
| 16:30 - 17:00 | *Tè digitale* |
|
||||||
|
| 17:00 - 18:00 | Tavola rotonda - Seconda Parte |
|
|
@ -0,0 +1,8 @@
|
||||||
|
title: Live - Conferenza Italiana LibreItalia
|
||||||
|
slug: live
|
||||||
|
template: large
|
||||||
|
|
||||||
|
# Live - Settima Conferenza Italiana LibreItalia 2020 #
|
||||||
|
|
||||||
|
<iframe id="embedded-chat" src="https://chat.linux.it/channel/libreitaliaconf?layout=embedded" width="100%" height="90%" style="min-height:400px"></iframe>
|
||||||
|
<iframe src="" style="position:absolute;top:0;left:0;width:99%;height:99%;" frameborder="0" allow="autoplay; fullscreen;" allowfullscreen mozallowfullscreen="true" webkitallowfullscreen="true"></iframe>
|
|
@ -0,0 +1,71 @@
|
||||||
|
#!/usr/bin/env python
|
||||||
|
# -*- coding: utf-8 -*- #
|
||||||
|
# vim:sts=4:sw=4
|
||||||
|
|
||||||
|
AUTHOR = 'LibreItalia'
|
||||||
|
SITENAME = 'Conferenze - LibreItalia'
|
||||||
|
SITEURL = ''
|
||||||
|
|
||||||
|
PATH = 'content'
|
||||||
|
|
||||||
|
TIMEZONE = 'Europe/Rome'
|
||||||
|
|
||||||
|
DEFAULT_LANG = 'it'
|
||||||
|
|
||||||
|
PLUGIN_PATHS = [ "plugins", ]
|
||||||
|
PLUGINS = [ "pelican_alias", ]
|
||||||
|
|
||||||
|
DEFAULT_PAGINATION = False
|
||||||
|
|
||||||
|
PAGE_URL = '{slug}/'
|
||||||
|
PAGE_SAVE_AS = '{slug}/index.html'
|
||||||
|
|
||||||
|
MENUITEMS = ( ("2020", "/2020/"), )
|
||||||
|
DISPLAY_PAGES_ON_MENU = False
|
||||||
|
DISPLAY_CATEGORIES_ON_MENU = False
|
||||||
|
|
||||||
|
# Blue Penguin theme
|
||||||
|
THEME = 'themes/blue-penguin'
|
||||||
|
DISPLAY_FOOTER = False
|
||||||
|
DISPLAY_HOME = False
|
||||||
|
|
||||||
|
# Gum theme
|
||||||
|
#THEME = 'themes/gum'
|
||||||
|
|
||||||
|
# Foundation theme
|
||||||
|
#THEME = 'themes/foundation'
|
||||||
|
#FOUNDATION_FOOTER_TEXT = " "
|
||||||
|
|
||||||
|
# Buruma theme
|
||||||
|
#THEME = 'themes/buruma'
|
||||||
|
#JINJA_ENVIRONMENT = {
|
||||||
|
# "extensions": ["jinja2.ext.i18n"],
|
||||||
|
#}
|
||||||
|
#PLUGINS = ["i18n_subsites", "pelican_alias", ]
|
||||||
|
#CATS_NOT_DROPDOWN = True
|
||||||
|
#MENUITEMS_NAVBAR = ( ("2020", "/2020/"), )
|
||||||
|
#FOOTER = ()
|
||||||
|
|
||||||
|
# Feed generation is usually not desired when developing
|
||||||
|
FEED_ALL_ATOM = None
|
||||||
|
CATEGORY_FEED_ATOM = None
|
||||||
|
TRANSLATION_FEED_ATOM = None
|
||||||
|
AUTHOR_FEED_ATOM = None
|
||||||
|
AUTHOR_FEED_RSS = None
|
||||||
|
|
||||||
|
# Blogroll
|
||||||
|
#LINKS = (('Pelican', 'https://getpelican.com/'),
|
||||||
|
# ('Python.org', 'https://www.python.org/'),
|
||||||
|
# ('Jinja2', 'https://palletsprojects.com/p/jinja/'),
|
||||||
|
# ('You can modify those links in your config file', '#'),)
|
||||||
|
|
||||||
|
# Social widget
|
||||||
|
#SOCIAL = (('You can add links in your config file', '#'),
|
||||||
|
# ('Another social link', '#'),)
|
||||||
|
|
||||||
|
# Uncomment following line if you want document-relative URLs when developing
|
||||||
|
RELATIVE_URLS = True
|
||||||
|
|
||||||
|
# Deploy
|
||||||
|
SSH_HOST = "ciccio"
|
||||||
|
SSH_TARGET_DIR = "/var/lib/nethserver/vhost/conference"
|
|
@ -0,0 +1,24 @@
|
||||||
|
#!/usr/bin/env python
|
||||||
|
# -*- coding: utf-8 -*- #
|
||||||
|
|
||||||
|
# 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 = ''
|
||||||
|
RELATIVE_URLS = False
|
||||||
|
|
||||||
|
FEED_ALL_ATOM = 'feeds/all.atom.xml'
|
||||||
|
CATEGORY_FEED_ATOM = 'feeds/{slug}.atom.xml'
|
||||||
|
|
||||||
|
DELETE_OUTPUT_DIRECTORY = True
|
||||||
|
|
||||||
|
# Following items are often useful when publishing
|
||||||
|
|
||||||
|
#DISQUS_SITENAME = ""
|
||||||
|
#GOOGLE_ANALYTICS = ""
|
|
@ -0,0 +1,13 @@
|
||||||
|
blinker==1.4
|
||||||
|
docutils==0.16
|
||||||
|
feedgenerator==1.9.1
|
||||||
|
Jinja2==2.11.2
|
||||||
|
Markdown==3.3.3
|
||||||
|
MarkupSafe==1.1.1
|
||||||
|
pelican==4.5.1
|
||||||
|
pelican-alias==1.1
|
||||||
|
Pygments==2.6.1
|
||||||
|
python-dateutil==2.8.1
|
||||||
|
pytz==2020.4
|
||||||
|
six==1.15.0
|
||||||
|
Unidecode==1.1.1
|
|
@ -0,0 +1,118 @@
|
||||||
|
# -*- coding: utf-8 -*-
|
||||||
|
|
||||||
|
import os
|
||||||
|
import shlex
|
||||||
|
import shutil
|
||||||
|
import sys
|
||||||
|
import datetime
|
||||||
|
|
||||||
|
from invoke import task
|
||||||
|
from invoke.main import program
|
||||||
|
from invoke.util import cd
|
||||||
|
from pelican import main as pelican_main
|
||||||
|
from pelican.server import ComplexHTTPRequestHandler, RootedHTTPServer
|
||||||
|
from pelican.settings import DEFAULT_CONFIG, get_settings_from_file
|
||||||
|
|
||||||
|
SETTINGS_FILE_BASE = 'pelicanconf.py'
|
||||||
|
SETTINGS = {}
|
||||||
|
SETTINGS.update(DEFAULT_CONFIG)
|
||||||
|
LOCAL_SETTINGS = get_settings_from_file(SETTINGS_FILE_BASE)
|
||||||
|
SETTINGS.update(LOCAL_SETTINGS)
|
||||||
|
|
||||||
|
CONFIG = {
|
||||||
|
'settings_base': SETTINGS_FILE_BASE,
|
||||||
|
'settings_publish': 'publishconf.py',
|
||||||
|
# Output path. Can be absolute or relative to tasks.py. Default: 'output'
|
||||||
|
'deploy_path': SETTINGS['OUTPUT_PATH'],
|
||||||
|
# Host and port for `serve`
|
||||||
|
'host': 'localhost',
|
||||||
|
'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"""
|
||||||
|
pelican_run('-s {settings_base}'.format(**CONFIG))
|
||||||
|
|
||||||
|
@task
|
||||||
|
def rebuild(c):
|
||||||
|
"""`build` with the delete switch"""
|
||||||
|
pelican_run('-d -s {settings_base}'.format(**CONFIG))
|
||||||
|
|
||||||
|
@task
|
||||||
|
def regenerate(c):
|
||||||
|
"""Automatically regenerate site upon file modification"""
|
||||||
|
pelican_run('-r -s {settings_base}'.format(**CONFIG))
|
||||||
|
|
||||||
|
@task
|
||||||
|
def serve(c):
|
||||||
|
"""Serve site at http://$HOST:$PORT/ (default is localhost:8000)"""
|
||||||
|
|
||||||
|
class AddressReuseTCPServer(RootedHTTPServer):
|
||||||
|
allow_reuse_address = True
|
||||||
|
|
||||||
|
server = AddressReuseTCPServer(
|
||||||
|
CONFIG['deploy_path'],
|
||||||
|
(CONFIG['host'], CONFIG['port']),
|
||||||
|
ComplexHTTPRequestHandler)
|
||||||
|
|
||||||
|
sys.stderr.write('Serving at {host}:{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"""
|
||||||
|
pelican_run('-s {settings_publish}'.format(**CONFIG))
|
||||||
|
|
||||||
|
@task
|
||||||
|
def livereload(c):
|
||||||
|
"""Automatically reload browser tab upon file modification."""
|
||||||
|
from livereload import Server
|
||||||
|
build(c)
|
||||||
|
server = Server()
|
||||||
|
# Watch the base settings file
|
||||||
|
server.watch(CONFIG['settings_base'], lambda: build(c))
|
||||||
|
# Watch content source files
|
||||||
|
content_file_extensions = ['.md', '.rst']
|
||||||
|
for extension in content_file_extensions:
|
||||||
|
content_blob = '{0}/**/*{1}'.format(SETTINGS['PATH'], extension)
|
||||||
|
server.watch(content_blob, lambda: build(c))
|
||||||
|
# Watch the theme's templates and static assets
|
||||||
|
theme_path = SETTINGS['THEME']
|
||||||
|
server.watch('{}/templates/*.html'.format(theme_path), lambda: build(c))
|
||||||
|
static_file_extensions = ['.css', '.js']
|
||||||
|
for extension in static_file_extensions:
|
||||||
|
static_file = '{0}/static/**/*{1}'.format(theme_path, extension)
|
||||||
|
server.watch(static_file, lambda: build(c))
|
||||||
|
# Serve output path on configured host and port
|
||||||
|
server.serve(host=CONFIG['host'], port=CONFIG['port'], root=CONFIG['deploy_path'])
|
||||||
|
|
||||||
|
|
||||||
|
@task
|
||||||
|
def publish(c):
|
||||||
|
"""Publish to production via rsync"""
|
||||||
|
pelican_run('-s {settings_publish}'.format(**CONFIG))
|
||||||
|
c.run(
|
||||||
|
'rsync --delete --exclude ".DS_Store" -pthrvz -c '
|
||||||
|
'-e "ssh -p {ssh_port}" '
|
||||||
|
'{} {ssh_user}@{ssh_host}:{ssh_path}'.format(
|
||||||
|
CONFIG['deploy_path'].rstrip('/') + '/',
|
||||||
|
**CONFIG))
|
||||||
|
|
||||||
|
|
||||||
|
def pelican_run(cmd):
|
||||||
|
cmd += ' ' + program.core.remainder # allows to pass-through args to pelican
|
||||||
|
pelican_main(shlex.split(cmd))
|
|
@ -0,0 +1,19 @@
|
||||||
|
# Contributors
|
||||||
|
|
||||||
|
* [Nevan Scott](https://github.com/nevanscott/Mockingbird) (original author)
|
||||||
|
* [wrl](https://github.com/wrl/pelican-mockingbird) (port to pelican, pelican-mockingbird)
|
||||||
|
* [Jody Frankowski](http://github.com/jody-frankowski) (Blue Penguin)
|
||||||
|
* [Grimbox](https://github.com/Grimbox)
|
||||||
|
* [ix5](https://github.com/ix5)
|
||||||
|
* [dn0](https://github.com/dn0)
|
||||||
|
* [anhtuann](https://github.com/anhtuann)
|
||||||
|
* [aperep](https://github.com/aperep)
|
||||||
|
* [iranzo](https://github.com/iranzo)
|
||||||
|
* [thetlk](https://github.com/thetlk)
|
||||||
|
* [SnorlaxYum](https://github.com/SnorlaxYum)
|
||||||
|
* [guikcd](https://github.com/guikcd)
|
||||||
|
* [jorgesumle](https://github.com/jorgesumle)
|
||||||
|
* [crxxn](https://github.com/crxxn)
|
||||||
|
* [gavinzbq](https://github.com/gavinzbq)
|
||||||
|
* [sylvainmetayer](https://github.com/sylvainmetayer)
|
||||||
|
* [wbob](https://github.com/wbob)
|
|
@ -0,0 +1,60 @@
|
||||||
|
![screenshot](screenshot.png)
|
||||||
|
|
||||||
|
# Blue Penguin for pelican
|
||||||
|
A simple theme for pelican. Solarized pygments. Feeds support.
|
||||||
|
|
||||||
|
## Settings
|
||||||
|
```python
|
||||||
|
# all the following settings are *optional*
|
||||||
|
|
||||||
|
# HTML metadata
|
||||||
|
SITEDESCRIPTION = ''
|
||||||
|
|
||||||
|
# all defaults to True.
|
||||||
|
DISPLAY_HEADER = True
|
||||||
|
DISPLAY_FOOTER = True
|
||||||
|
DISPLAY_HOME = True
|
||||||
|
DISPLAY_MENU = True
|
||||||
|
|
||||||
|
# provided as examples, they make ‘clean’ urls. used by MENU_INTERNAL_PAGES.
|
||||||
|
TAGS_URL = 'tags'
|
||||||
|
TAGS_SAVE_AS = 'tags/index.html'
|
||||||
|
AUTHORS_URL = 'authors'
|
||||||
|
AUTHORS_SAVE_AS = 'authors/index.html'
|
||||||
|
CATEGORIES_URL = 'categories'
|
||||||
|
CATEGORIES_SAVE_AS = 'categories/index.html'
|
||||||
|
ARCHIVES_URL = 'archives'
|
||||||
|
ARCHIVES_SAVE_AS = 'archives/index.html'
|
||||||
|
|
||||||
|
# use those if you want pelican standard pages to appear in your menu
|
||||||
|
MENU_INTERNAL_PAGES = (
|
||||||
|
('Tags', TAGS_URL, TAGS_SAVE_AS),
|
||||||
|
('Authors', AUTHORS_URL, AUTHORS_SAVE_AS),
|
||||||
|
('Categories', CATEGORIES_URL, CATEGORIES_SAVE_AS),
|
||||||
|
('Archives', ARCHIVES_URL, ARCHIVES_SAVE_AS),
|
||||||
|
)
|
||||||
|
# additional menu items
|
||||||
|
MENUITEMS = (
|
||||||
|
('GitHub', 'https://github.com/'),
|
||||||
|
('Linux Kernel', 'https://www.kernel.org/'),
|
||||||
|
)
|
||||||
|
|
||||||
|
# example pagination pattern
|
||||||
|
PAGINATION_PATTERNS = (
|
||||||
|
(1, '{url}', '{save_as}'),
|
||||||
|
(2, '{base_name}/page/{number}/', '{base_name}/page/{number}/index.html'),
|
||||||
|
)
|
||||||
|
|
||||||
|
```
|
||||||
|
|
||||||
|
## How to contribute
|
||||||
|
Contributions are very welcome. Keep in mind that this theme goal is to be
|
||||||
|
minimalistic/simple. Contributions will be accepted through Github Pull
|
||||||
|
Requests. If you don’t have a Github account you can suggest me your
|
||||||
|
changes by email.
|
||||||
|
|
||||||
|
## Contributors
|
||||||
|
See [CONTRIBUTORS.md](CONTRIBUTORS.md).
|
||||||
|
|
||||||
|
## License
|
||||||
|
Public domain.
|
Binary file not shown.
After Width: | Height: | Size: 984 KiB |
|
@ -0,0 +1,418 @@
|
||||||
|
/* http://meyerweb.com/eric/tools/css/reset/
|
||||||
|
v2.0 | 20110126
|
||||||
|
License: none (public domain)
|
||||||
|
*/
|
||||||
|
/* Mockingbird Theme by Nevan Scott nevanscott.com */
|
||||||
|
/* Modified by Jody Frankowski */
|
||||||
|
/* Modified by ix5 */
|
||||||
|
|
||||||
|
html, body, div, span, applet, object, iframe,
|
||||||
|
h1, h2, h3, h4, h5, h6, p, blockquote, pre,
|
||||||
|
a, abbr, acronym, address, big, cite, code,
|
||||||
|
del, dfn, em, img, ins, kbd, q, s, samp,
|
||||||
|
small, strike, strong, sub, sup, tt, var,
|
||||||
|
b, u, i, center,
|
||||||
|
dl, dt, dd, li,
|
||||||
|
fieldset, form, label, legend,
|
||||||
|
table, caption, tbody, tfoot, thead, tr, th, td,
|
||||||
|
article, aside, canvas, details, embed,
|
||||||
|
figure, figcaption, footer, header, hgroup,
|
||||||
|
menu, nav, output, ruby, section, summary,
|
||||||
|
time, mark, audio, video {
|
||||||
|
margin: 0;
|
||||||
|
padding: 0;
|
||||||
|
border: 0;
|
||||||
|
font-size: 100%;
|
||||||
|
font: inherit;
|
||||||
|
vertical-align: baseline;
|
||||||
|
}
|
||||||
|
em {
|
||||||
|
font-style: italic;
|
||||||
|
}
|
||||||
|
strong {
|
||||||
|
font-weight: bold;
|
||||||
|
}
|
||||||
|
/* HTML5 display-role reset for older browsers */
|
||||||
|
article, aside, details, figcaption, figure,
|
||||||
|
footer, header, hgroup, menu, nav, section {
|
||||||
|
display: block;
|
||||||
|
}
|
||||||
|
body {
|
||||||
|
line-height: 1;
|
||||||
|
}
|
||||||
|
ol, ul {
|
||||||
|
list-style: none;
|
||||||
|
}
|
||||||
|
blockquote, q {
|
||||||
|
quotes: none;
|
||||||
|
}
|
||||||
|
blockquote:before, blockquote:after,
|
||||||
|
q:before, q:after {
|
||||||
|
content: '';
|
||||||
|
content: none;
|
||||||
|
}
|
||||||
|
table {
|
||||||
|
border-collapse: collapse;
|
||||||
|
border-spacing: 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
body {
|
||||||
|
font-family: sans-serif;
|
||||||
|
font-size: 16px;
|
||||||
|
line-height: 1.5em;
|
||||||
|
}
|
||||||
|
|
||||||
|
header, #wrapper {
|
||||||
|
padding: 0 0px;
|
||||||
|
margin: auto;
|
||||||
|
}
|
||||||
|
|
||||||
|
a {
|
||||||
|
text-decoration: none;
|
||||||
|
color: #3a7c78;
|
||||||
|
}
|
||||||
|
|
||||||
|
ul {
|
||||||
|
list-style: outside disc;
|
||||||
|
}
|
||||||
|
|
||||||
|
ol {
|
||||||
|
list-style: outside decimal;
|
||||||
|
}
|
||||||
|
|
||||||
|
h1, h2, h3, h4, h5, h6 {
|
||||||
|
font-family: sans-serif;
|
||||||
|
font-weight: bold;
|
||||||
|
}
|
||||||
|
h1, h2, h3 {
|
||||||
|
font-size: 1.5em;
|
||||||
|
line-height: 1em;
|
||||||
|
margin: 1em 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
img, p, .post > .highlight, .highlighttable, h4, h5, h6 {
|
||||||
|
margin-top: 1.2em;
|
||||||
|
}
|
||||||
|
img + em {
|
||||||
|
font-size: .8em;
|
||||||
|
}
|
||||||
|
|
||||||
|
blockquote {
|
||||||
|
margin: 1.5em 1.5em 1.5em .75em;
|
||||||
|
padding-left: .75em;
|
||||||
|
border-left: 1px solid #EEE;
|
||||||
|
}
|
||||||
|
|
||||||
|
table {
|
||||||
|
width: 100%;
|
||||||
|
margin: 1em 0;
|
||||||
|
}
|
||||||
|
thead {
|
||||||
|
border-bottom: 1px solid black;
|
||||||
|
}
|
||||||
|
|
||||||
|
.date {
|
||||||
|
color: #CCC;
|
||||||
|
float: left;
|
||||||
|
clear: both;
|
||||||
|
width: 130px;
|
||||||
|
font-size: 1.5em;
|
||||||
|
line-height: 1em;
|
||||||
|
margin: 0 20px 1em 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
.info {
|
||||||
|
margin-top: 1.3em;
|
||||||
|
font-family: sans-serif;
|
||||||
|
text-align: right;
|
||||||
|
color: #BBB;
|
||||||
|
}
|
||||||
|
.info a {
|
||||||
|
color: inherit;
|
||||||
|
}
|
||||||
|
.info a.tags {
|
||||||
|
background: #CCC;
|
||||||
|
color: #FFF;
|
||||||
|
display: inline-block;
|
||||||
|
padding: 0 .3em;
|
||||||
|
border: 1px transparent solid;
|
||||||
|
border-radius: 5px;
|
||||||
|
margin: 0 0 0.3em 0;
|
||||||
|
}
|
||||||
|
.info a.tags:hover {
|
||||||
|
background: inherit;
|
||||||
|
color: inherit;
|
||||||
|
}
|
||||||
|
.info a.tags.selected {
|
||||||
|
border: 1px #999 solid;
|
||||||
|
}
|
||||||
|
|
||||||
|
.post {
|
||||||
|
margin: 0 0 1em 150px;
|
||||||
|
}
|
||||||
|
.post.archives {
|
||||||
|
margin-bottom: 1.5em;
|
||||||
|
margin-left: 160px;
|
||||||
|
}
|
||||||
|
.post p {
|
||||||
|
text-align: justify;
|
||||||
|
}
|
||||||
|
|
||||||
|
.page {
|
||||||
|
margin: 0 90px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.highlight {
|
||||||
|
border-radius: 3px;
|
||||||
|
}
|
||||||
|
.code > .highlight {
|
||||||
|
border-radius: 0px 3px 3px 0px;
|
||||||
|
}
|
||||||
|
.linenos {
|
||||||
|
border-radius: 3px 0px 0px 3px;
|
||||||
|
background-color: #073642;
|
||||||
|
border-right: 1px solid #00232C;
|
||||||
|
color: #586E75;
|
||||||
|
text-shadow: 0px -1px #021014;
|
||||||
|
}
|
||||||
|
td.code {
|
||||||
|
width: 100%;
|
||||||
|
max-width: 100px;
|
||||||
|
}
|
||||||
|
.linenos a {
|
||||||
|
color: #586E75;
|
||||||
|
}
|
||||||
|
|
||||||
|
img {
|
||||||
|
box-shadow: 0px 1px 4px rgba(0, 0, 0, 0.15);
|
||||||
|
border-radius: 0.3em;
|
||||||
|
max-width: 100%;
|
||||||
|
display: block;
|
||||||
|
margin-left: auto;
|
||||||
|
margin-right: auto;
|
||||||
|
}
|
||||||
|
|
||||||
|
/*sub and sup stolen from Twitter bootstrap.*/
|
||||||
|
sub, sup {
|
||||||
|
position: relative;
|
||||||
|
font-size: 75%;
|
||||||
|
line-height: 0;
|
||||||
|
vertical-align: baseline;
|
||||||
|
}
|
||||||
|
|
||||||
|
sup {
|
||||||
|
top: -0.5em;
|
||||||
|
}
|
||||||
|
|
||||||
|
sub {
|
||||||
|
bottom: -0.25em;
|
||||||
|
}
|
||||||
|
|
||||||
|
.post pre, .page pre {
|
||||||
|
padding: .8em;
|
||||||
|
font-size: 12px;
|
||||||
|
font-family: Monospace;
|
||||||
|
line-height: 1.1em;
|
||||||
|
overflow: auto;
|
||||||
|
}
|
||||||
|
|
||||||
|
form.inline_edit {
|
||||||
|
clear: both;
|
||||||
|
margin: 1em 0;
|
||||||
|
background-color: #DDD;
|
||||||
|
color: #000;
|
||||||
|
padding: 20px;
|
||||||
|
border-radius: 5px;
|
||||||
|
}
|
||||||
|
.inline_edit .sub {
|
||||||
|
color: #888;
|
||||||
|
white-space: nowrap;
|
||||||
|
}
|
||||||
|
.inline_edit label {
|
||||||
|
float: left;
|
||||||
|
clear: both;
|
||||||
|
width: 140px;
|
||||||
|
margin-right: 20px;
|
||||||
|
}
|
||||||
|
.inline_edit .buttons {
|
||||||
|
display: block;
|
||||||
|
text-align: right;
|
||||||
|
}
|
||||||
|
|
||||||
|
nav ul {
|
||||||
|
float: right;
|
||||||
|
list-style: none;
|
||||||
|
margin: 0 0 0 3em;
|
||||||
|
padding: 0;
|
||||||
|
}
|
||||||
|
nav li {
|
||||||
|
float: left;
|
||||||
|
}
|
||||||
|
nav a {
|
||||||
|
display: block;
|
||||||
|
padding: 1em 10px 10px 10px;
|
||||||
|
}
|
||||||
|
nav a:hover {
|
||||||
|
background-color: #3a7c78;
|
||||||
|
color: #FFF;
|
||||||
|
}
|
||||||
|
nav li.selected a {
|
||||||
|
background-color: #15A9DB;
|
||||||
|
color: #FFF;
|
||||||
|
}
|
||||||
|
|
||||||
|
header .header_box {
|
||||||
|
padding-top: 1em;
|
||||||
|
}
|
||||||
|
header h1 {
|
||||||
|
font-size: 1.5em;
|
||||||
|
line-height: 1em;
|
||||||
|
margin: 0;
|
||||||
|
}
|
||||||
|
header h2 {
|
||||||
|
font-size: 1em;
|
||||||
|
margin: .3em 0;
|
||||||
|
color: #DDD;
|
||||||
|
}
|
||||||
|
|
||||||
|
#content {
|
||||||
|
margin-top: 3em;
|
||||||
|
}
|
||||||
|
|
||||||
|
#embedded-chat {
|
||||||
|
width: 300px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.pages {
|
||||||
|
font-family: sans-serif;
|
||||||
|
line-height: 2.5em;
|
||||||
|
margin: 1em 0 3em;
|
||||||
|
background-color: #F9F9F9;
|
||||||
|
border-radius: 5px;
|
||||||
|
}
|
||||||
|
.pages a.next_page {
|
||||||
|
float: right;
|
||||||
|
width: 140px;
|
||||||
|
text-align: center;
|
||||||
|
border-top-right-radius: 5px;
|
||||||
|
border-bottom-right-radius: 5px;
|
||||||
|
background-color: #EEE;
|
||||||
|
}
|
||||||
|
.pages a.prev_page {
|
||||||
|
float: left;
|
||||||
|
width: 140px;
|
||||||
|
text-align: center;
|
||||||
|
border-top-left-radius: 5px;
|
||||||
|
border-bottom-left-radius: 5px;
|
||||||
|
background-color: #EEE;
|
||||||
|
}
|
||||||
|
.pages a {
|
||||||
|
color: inherit;
|
||||||
|
border: none;
|
||||||
|
}
|
||||||
|
.pages a:hover {
|
||||||
|
background-color: #DDD;
|
||||||
|
}
|
||||||
|
.pages span {
|
||||||
|
display: block;
|
||||||
|
margin: 0 160px;
|
||||||
|
text-align: center;
|
||||||
|
}
|
||||||
|
|
||||||
|
code {
|
||||||
|
background-color: #F9F2F4;
|
||||||
|
border-bottom-left-radius: 4px;
|
||||||
|
border-bottom-right-radius: 4px;
|
||||||
|
border-top-left-radius: 4px;
|
||||||
|
border-top-right-radius: 4px;
|
||||||
|
box-sizing: border-box;
|
||||||
|
color: #C7254E;
|
||||||
|
font-family: Monaco,Menlo,Consolas,"Courier New",monospace;
|
||||||
|
font-size: 12.6px;
|
||||||
|
line-height: 18px;
|
||||||
|
padding-bottom: 2px;
|
||||||
|
padding-left: 4px;
|
||||||
|
padding-right: 4px;
|
||||||
|
padding-top: 2px;
|
||||||
|
white-space: nowrap;
|
||||||
|
}
|
||||||
|
|
||||||
|
footer {
|
||||||
|
font-family: sans-serif;
|
||||||
|
line-height: 2.5em;
|
||||||
|
text-align: center;
|
||||||
|
color: #BBB;
|
||||||
|
margin: 3em 0;
|
||||||
|
border: 1px solid #EEE;
|
||||||
|
border-radius: 5px;
|
||||||
|
}
|
||||||
|
footer p { margin: 0; }
|
||||||
|
|
||||||
|
.right { float: right; }
|
||||||
|
|
||||||
|
.clear { clear: both; }
|
||||||
|
|
||||||
|
@media screen and (max-width: 1024px) {
|
||||||
|
#wrapper {
|
||||||
|
margin-left: 2.6em;
|
||||||
|
padding:1em;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@media screen and (max-width: 800px), print {
|
||||||
|
#wrapper {
|
||||||
|
margin: 0;
|
||||||
|
padding: 1em;
|
||||||
|
}
|
||||||
|
.date {
|
||||||
|
width: 100%;
|
||||||
|
margin: 0 0 .5em 0;
|
||||||
|
}
|
||||||
|
.post {
|
||||||
|
margin: 0 0 1em 0;
|
||||||
|
}
|
||||||
|
.post pre,
|
||||||
|
.post code {
|
||||||
|
white-space: pre-wrap;
|
||||||
|
}
|
||||||
|
.archives {
|
||||||
|
margin: 0 0 1.5em 0 !important;
|
||||||
|
}
|
||||||
|
nav ul {
|
||||||
|
margin: 0 0 1em 0;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
@media print {
|
||||||
|
* {
|
||||||
|
background: #fff;
|
||||||
|
}
|
||||||
|
#wrapper, #content {
|
||||||
|
margin: 0;
|
||||||
|
padding: 0;
|
||||||
|
}
|
||||||
|
header, footer, nav {
|
||||||
|
display: none;
|
||||||
|
}
|
||||||
|
img {
|
||||||
|
break-inside: avoid;
|
||||||
|
}
|
||||||
|
p, table, pre {
|
||||||
|
widows: 3;
|
||||||
|
orphans: 3;
|
||||||
|
}
|
||||||
|
h1, h2, h3, h4, h5, h6 {
|
||||||
|
break-after: avoid;
|
||||||
|
}
|
||||||
|
h1, h2 {
|
||||||
|
font-size: 14pt;
|
||||||
|
}
|
||||||
|
h3, h4, h4.date {
|
||||||
|
font-size: 12pt;
|
||||||
|
}
|
||||||
|
.post p, .post ul li, .post ol li, .post table {
|
||||||
|
font-size: 11pt;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
@page {
|
||||||
|
margin: 1.5cm;
|
||||||
|
}
|
|
@ -0,0 +1,415 @@
|
||||||
|
/* http://meyerweb.com/eric/tools/css/reset/
|
||||||
|
v2.0 | 20110126
|
||||||
|
License: none (public domain)
|
||||||
|
*/
|
||||||
|
/* Mockingbird Theme by Nevan Scott nevanscott.com */
|
||||||
|
/* Modified by Jody Frankowski */
|
||||||
|
/* Modified by ix5 */
|
||||||
|
|
||||||
|
html, body, div, span, applet, object, iframe,
|
||||||
|
h1, h2, h3, h4, h5, h6, p, blockquote, pre,
|
||||||
|
a, abbr, acronym, address, big, cite, code,
|
||||||
|
del, dfn, em, img, ins, kbd, q, s, samp,
|
||||||
|
small, strike, strong, sub, sup, tt, var,
|
||||||
|
b, u, i, center,
|
||||||
|
dl, dt, dd, li,
|
||||||
|
fieldset, form, label, legend,
|
||||||
|
table, caption, tbody, tfoot, thead, tr, th, td,
|
||||||
|
article, aside, canvas, details, embed,
|
||||||
|
figure, figcaption, footer, header, hgroup,
|
||||||
|
menu, nav, output, ruby, section, summary,
|
||||||
|
time, mark, audio, video {
|
||||||
|
margin: 0;
|
||||||
|
padding: 0;
|
||||||
|
border: 0;
|
||||||
|
font-size: 100%;
|
||||||
|
font: inherit;
|
||||||
|
vertical-align: baseline;
|
||||||
|
}
|
||||||
|
em {
|
||||||
|
font-style: italic;
|
||||||
|
}
|
||||||
|
strong {
|
||||||
|
font-weight: bold;
|
||||||
|
}
|
||||||
|
/* HTML5 display-role reset for older browsers */
|
||||||
|
article, aside, details, figcaption, figure,
|
||||||
|
footer, header, hgroup, menu, nav, section {
|
||||||
|
display: block;
|
||||||
|
}
|
||||||
|
body {
|
||||||
|
line-height: 1;
|
||||||
|
}
|
||||||
|
ol, ul {
|
||||||
|
list-style: none;
|
||||||
|
}
|
||||||
|
blockquote, q {
|
||||||
|
quotes: none;
|
||||||
|
}
|
||||||
|
blockquote:before, blockquote:after,
|
||||||
|
q:before, q:after {
|
||||||
|
content: '';
|
||||||
|
content: none;
|
||||||
|
}
|
||||||
|
table {
|
||||||
|
border-collapse: collapse;
|
||||||
|
border-spacing: 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
body {
|
||||||
|
font-family: sans-serif;
|
||||||
|
font-size: 16px;
|
||||||
|
line-height: 1.5em;
|
||||||
|
}
|
||||||
|
|
||||||
|
header, #wrapper {
|
||||||
|
padding: 0 0px;
|
||||||
|
max-width: 1080px;
|
||||||
|
margin: auto;
|
||||||
|
}
|
||||||
|
|
||||||
|
a {
|
||||||
|
text-decoration: none;
|
||||||
|
color: #3a7c78;
|
||||||
|
}
|
||||||
|
|
||||||
|
ul {
|
||||||
|
list-style: outside disc;
|
||||||
|
}
|
||||||
|
|
||||||
|
ol {
|
||||||
|
list-style: outside decimal;
|
||||||
|
}
|
||||||
|
|
||||||
|
h1, h2, h3, h4, h5, h6 {
|
||||||
|
font-family: sans-serif;
|
||||||
|
font-weight: bold;
|
||||||
|
}
|
||||||
|
h1, h2, h3 {
|
||||||
|
font-size: 1.5em;
|
||||||
|
line-height: 1em;
|
||||||
|
margin: 1em 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
img, p, .post > .highlight, .highlighttable, h4, h5, h6 {
|
||||||
|
margin-top: 1.2em;
|
||||||
|
}
|
||||||
|
img + em {
|
||||||
|
font-size: .8em;
|
||||||
|
}
|
||||||
|
|
||||||
|
blockquote {
|
||||||
|
margin: 1.5em 1.5em 1.5em .75em;
|
||||||
|
padding-left: .75em;
|
||||||
|
border-left: 1px solid #EEE;
|
||||||
|
}
|
||||||
|
|
||||||
|
table {
|
||||||
|
width: 100%;
|
||||||
|
margin: 1em 0;
|
||||||
|
}
|
||||||
|
thead {
|
||||||
|
border-bottom: 1px solid black;
|
||||||
|
}
|
||||||
|
|
||||||
|
.date {
|
||||||
|
color: #CCC;
|
||||||
|
float: left;
|
||||||
|
clear: both;
|
||||||
|
width: 130px;
|
||||||
|
font-size: 1.5em;
|
||||||
|
line-height: 1em;
|
||||||
|
margin: 0 20px 1em 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
.info {
|
||||||
|
margin-top: 1.3em;
|
||||||
|
font-family: sans-serif;
|
||||||
|
text-align: right;
|
||||||
|
color: #BBB;
|
||||||
|
}
|
||||||
|
.info a {
|
||||||
|
color: inherit;
|
||||||
|
}
|
||||||
|
.info a.tags {
|
||||||
|
background: #CCC;
|
||||||
|
color: #FFF;
|
||||||
|
display: inline-block;
|
||||||
|
padding: 0 .3em;
|
||||||
|
border: 1px transparent solid;
|
||||||
|
border-radius: 5px;
|
||||||
|
margin: 0 0 0.3em 0;
|
||||||
|
}
|
||||||
|
.info a.tags:hover {
|
||||||
|
background: inherit;
|
||||||
|
color: inherit;
|
||||||
|
}
|
||||||
|
.info a.tags.selected {
|
||||||
|
border: 1px #999 solid;
|
||||||
|
}
|
||||||
|
|
||||||
|
.post {
|
||||||
|
margin: 0 0 1em 150px;
|
||||||
|
}
|
||||||
|
.post.archives {
|
||||||
|
margin-bottom: 1.5em;
|
||||||
|
margin-left: 160px;
|
||||||
|
}
|
||||||
|
.post p {
|
||||||
|
text-align: justify;
|
||||||
|
}
|
||||||
|
|
||||||
|
.page {
|
||||||
|
margin: 0 90px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.highlight {
|
||||||
|
border-radius: 3px;
|
||||||
|
}
|
||||||
|
.code > .highlight {
|
||||||
|
border-radius: 0px 3px 3px 0px;
|
||||||
|
}
|
||||||
|
.linenos {
|
||||||
|
border-radius: 3px 0px 0px 3px;
|
||||||
|
background-color: #073642;
|
||||||
|
border-right: 1px solid #00232C;
|
||||||
|
color: #586E75;
|
||||||
|
text-shadow: 0px -1px #021014;
|
||||||
|
}
|
||||||
|
td.code {
|
||||||
|
width: 100%;
|
||||||
|
max-width: 100px;
|
||||||
|
}
|
||||||
|
.linenos a {
|
||||||
|
color: #586E75;
|
||||||
|
}
|
||||||
|
|
||||||
|
img {
|
||||||
|
box-shadow: 0px 1px 4px rgba(0, 0, 0, 0.15);
|
||||||
|
border-radius: 0.3em;
|
||||||
|
max-width: 100%;
|
||||||
|
display: block;
|
||||||
|
margin-left: auto;
|
||||||
|
margin-right: auto;
|
||||||
|
}
|
||||||
|
|
||||||
|
/*sub and sup stolen from Twitter bootstrap.*/
|
||||||
|
sub, sup {
|
||||||
|
position: relative;
|
||||||
|
font-size: 75%;
|
||||||
|
line-height: 0;
|
||||||
|
vertical-align: baseline;
|
||||||
|
}
|
||||||
|
|
||||||
|
sup {
|
||||||
|
top: -0.5em;
|
||||||
|
}
|
||||||
|
|
||||||
|
sub {
|
||||||
|
bottom: -0.25em;
|
||||||
|
}
|
||||||
|
|
||||||
|
.post pre, .page pre {
|
||||||
|
padding: .8em;
|
||||||
|
font-size: 12px;
|
||||||
|
font-family: Monospace;
|
||||||
|
line-height: 1.1em;
|
||||||
|
overflow: auto;
|
||||||
|
}
|
||||||
|
|
||||||
|
form.inline_edit {
|
||||||
|
clear: both;
|
||||||
|
margin: 1em 0;
|
||||||
|
background-color: #DDD;
|
||||||
|
color: #000;
|
||||||
|
padding: 20px;
|
||||||
|
border-radius: 5px;
|
||||||
|
}
|
||||||
|
.inline_edit .sub {
|
||||||
|
color: #888;
|
||||||
|
white-space: nowrap;
|
||||||
|
}
|
||||||
|
.inline_edit label {
|
||||||
|
float: left;
|
||||||
|
clear: both;
|
||||||
|
width: 140px;
|
||||||
|
margin-right: 20px;
|
||||||
|
}
|
||||||
|
.inline_edit .buttons {
|
||||||
|
display: block;
|
||||||
|
text-align: right;
|
||||||
|
}
|
||||||
|
|
||||||
|
nav ul {
|
||||||
|
float: right;
|
||||||
|
list-style: none;
|
||||||
|
margin: 0 0 0 3em;
|
||||||
|
padding: 0;
|
||||||
|
}
|
||||||
|
nav li {
|
||||||
|
float: left;
|
||||||
|
}
|
||||||
|
nav a {
|
||||||
|
display: block;
|
||||||
|
padding: 1em 10px 10px 10px;
|
||||||
|
}
|
||||||
|
nav a:hover {
|
||||||
|
background-color: #3a7c78;
|
||||||
|
color: #FFF;
|
||||||
|
}
|
||||||
|
nav li.selected a {
|
||||||
|
background-color: #15A9DB;
|
||||||
|
color: #FFF;
|
||||||
|
}
|
||||||
|
|
||||||
|
header .header_box {
|
||||||
|
padding-top: 1em;
|
||||||
|
}
|
||||||
|
header h1 {
|
||||||
|
font-size: 1.5em;
|
||||||
|
line-height: 1em;
|
||||||
|
margin: 0;
|
||||||
|
}
|
||||||
|
header h2 {
|
||||||
|
font-size: 1em;
|
||||||
|
margin: .3em 0;
|
||||||
|
color: #DDD;
|
||||||
|
}
|
||||||
|
|
||||||
|
#content {
|
||||||
|
margin-top: 3em;
|
||||||
|
}
|
||||||
|
|
||||||
|
.pages {
|
||||||
|
font-family: sans-serif;
|
||||||
|
line-height: 2.5em;
|
||||||
|
margin: 1em 0 3em;
|
||||||
|
background-color: #F9F9F9;
|
||||||
|
border-radius: 5px;
|
||||||
|
}
|
||||||
|
.pages a.next_page {
|
||||||
|
float: right;
|
||||||
|
width: 140px;
|
||||||
|
text-align: center;
|
||||||
|
border-top-right-radius: 5px;
|
||||||
|
border-bottom-right-radius: 5px;
|
||||||
|
background-color: #EEE;
|
||||||
|
}
|
||||||
|
.pages a.prev_page {
|
||||||
|
float: left;
|
||||||
|
width: 140px;
|
||||||
|
text-align: center;
|
||||||
|
border-top-left-radius: 5px;
|
||||||
|
border-bottom-left-radius: 5px;
|
||||||
|
background-color: #EEE;
|
||||||
|
}
|
||||||
|
.pages a {
|
||||||
|
color: inherit;
|
||||||
|
border: none;
|
||||||
|
}
|
||||||
|
.pages a:hover {
|
||||||
|
background-color: #DDD;
|
||||||
|
}
|
||||||
|
.pages span {
|
||||||
|
display: block;
|
||||||
|
margin: 0 160px;
|
||||||
|
text-align: center;
|
||||||
|
}
|
||||||
|
|
||||||
|
code {
|
||||||
|
background-color: #F9F2F4;
|
||||||
|
border-bottom-left-radius: 4px;
|
||||||
|
border-bottom-right-radius: 4px;
|
||||||
|
border-top-left-radius: 4px;
|
||||||
|
border-top-right-radius: 4px;
|
||||||
|
box-sizing: border-box;
|
||||||
|
color: #C7254E;
|
||||||
|
font-family: Monaco,Menlo,Consolas,"Courier New",monospace;
|
||||||
|
font-size: 12.6px;
|
||||||
|
line-height: 18px;
|
||||||
|
padding-bottom: 2px;
|
||||||
|
padding-left: 4px;
|
||||||
|
padding-right: 4px;
|
||||||
|
padding-top: 2px;
|
||||||
|
white-space: nowrap;
|
||||||
|
}
|
||||||
|
|
||||||
|
footer {
|
||||||
|
font-family: sans-serif;
|
||||||
|
line-height: 2.5em;
|
||||||
|
text-align: center;
|
||||||
|
color: #BBB;
|
||||||
|
margin: 3em 0;
|
||||||
|
border: 1px solid #EEE;
|
||||||
|
border-radius: 5px;
|
||||||
|
}
|
||||||
|
footer p { margin: 0; }
|
||||||
|
|
||||||
|
.right { float: right; }
|
||||||
|
|
||||||
|
.clear { clear: both; }
|
||||||
|
|
||||||
|
@media screen and (max-width: 1024px) {
|
||||||
|
#wrapper {
|
||||||
|
margin-left: 2.6em;
|
||||||
|
padding:1em;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@media screen and (max-width: 800px), print {
|
||||||
|
#wrapper {
|
||||||
|
margin: 0;
|
||||||
|
padding: 1em;
|
||||||
|
}
|
||||||
|
.date {
|
||||||
|
width: 100%;
|
||||||
|
margin: 0 0 .5em 0;
|
||||||
|
}
|
||||||
|
.post {
|
||||||
|
margin: 0 0 1em 0;
|
||||||
|
}
|
||||||
|
.post pre,
|
||||||
|
.post code {
|
||||||
|
white-space: pre-wrap;
|
||||||
|
}
|
||||||
|
.archives {
|
||||||
|
margin: 0 0 1.5em 0 !important;
|
||||||
|
}
|
||||||
|
nav ul {
|
||||||
|
margin: 0 0 1em 0;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
@media print {
|
||||||
|
* {
|
||||||
|
background: #fff;
|
||||||
|
}
|
||||||
|
#wrapper, #content {
|
||||||
|
margin: 0;
|
||||||
|
padding: 0;
|
||||||
|
}
|
||||||
|
header, footer, nav {
|
||||||
|
display: none;
|
||||||
|
}
|
||||||
|
img {
|
||||||
|
break-inside: avoid;
|
||||||
|
}
|
||||||
|
p, table, pre {
|
||||||
|
widows: 3;
|
||||||
|
orphans: 3;
|
||||||
|
}
|
||||||
|
h1, h2, h3, h4, h5, h6 {
|
||||||
|
break-after: avoid;
|
||||||
|
}
|
||||||
|
h1, h2 {
|
||||||
|
font-size: 14pt;
|
||||||
|
}
|
||||||
|
h3, h4, h4.date {
|
||||||
|
font-size: 12pt;
|
||||||
|
}
|
||||||
|
.post p, .post ul li, .post ol li, .post table {
|
||||||
|
font-size: 11pt;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
@page {
|
||||||
|
margin: 1.5cm;
|
||||||
|
}
|
|
@ -0,0 +1,87 @@
|
||||||
|
/* Solarized Dark
|
||||||
|
|
||||||
|
For use with Jekyll and Pygments
|
||||||
|
|
||||||
|
http://ethanschoonover.com/solarized
|
||||||
|
|
||||||
|
SOLARIZED HEX ROLE
|
||||||
|
--------- -------- ------------------------------------------
|
||||||
|
base03 #002b36 background
|
||||||
|
base01 #586e75 comments / secondary content
|
||||||
|
base1 #93a1a1 body text / default code / primary content
|
||||||
|
orange #cb4b16 constants
|
||||||
|
red #dc322f regex, special keywords
|
||||||
|
blue #268bd2 reserved keywords
|
||||||
|
cyan #2aa198 strings, numbers
|
||||||
|
green #859900 operators, other keywords
|
||||||
|
*/
|
||||||
|
|
||||||
|
.highlight { background-color: #002b36; color: #93a1a1 }
|
||||||
|
.highlight .c { color: #586e75 } /* Comment */
|
||||||
|
.highlight .err { color: #93a1a1 } /* Error */
|
||||||
|
.highlight .g { color: #93a1a1 } /* Generic */
|
||||||
|
.highlight .k { color: #859900 } /* Keyword */
|
||||||
|
.highlight .l { color: #93a1a1 } /* Literal */
|
||||||
|
.highlight .n { color: #93a1a1 } /* Name */
|
||||||
|
.highlight .o { color: #859900 } /* Operator */
|
||||||
|
.highlight .x { color: #cb4b16 } /* Other */
|
||||||
|
.highlight .p { color: #93a1a1 } /* Punctuation */
|
||||||
|
.highlight .cm { color: #586e75 } /* Comment.Multiline */
|
||||||
|
.highlight .cp { color: #859900 } /* Comment.Preproc */
|
||||||
|
.highlight .c1 { color: #586e75 } /* Comment.Single */
|
||||||
|
.highlight .cs { color: #859900 } /* Comment.Special */
|
||||||
|
.highlight .gd { color: #2aa198 } /* Generic.Deleted */
|
||||||
|
.highlight .ge { color: #93a1a1; font-style: italic } /* Generic.Emph */
|
||||||
|
.highlight .gr { color: #dc322f } /* Generic.Error */
|
||||||
|
.highlight .gh { color: #cb4b16 } /* Generic.Heading */
|
||||||
|
.highlight .gi { color: #859900 } /* Generic.Inserted */
|
||||||
|
.highlight .go { color: #93a1a1 } /* Generic.Output */
|
||||||
|
.highlight .gp { color: #93a1a1 } /* Generic.Prompt */
|
||||||
|
.highlight .gs { color: #93a1a1; font-weight: bold } /* Generic.Strong */
|
||||||
|
.highlight .gu { color: #cb4b16 } /* Generic.Subheading */
|
||||||
|
.highlight .gt { color: #93a1a1 } /* Generic.Traceback */
|
||||||
|
.highlight .kc { color: #cb4b16 } /* Keyword.Constant */
|
||||||
|
.highlight .kd { color: #268bd2 } /* Keyword.Declaration */
|
||||||
|
.highlight .kn { color: #859900 } /* Keyword.Namespace */
|
||||||
|
.highlight .kp { color: #859900 } /* Keyword.Pseudo */
|
||||||
|
.highlight .kr { color: #268bd2 } /* Keyword.Reserved */
|
||||||
|
.highlight .kt { color: #dc322f } /* Keyword.Type */
|
||||||
|
.highlight .ld { color: #93a1a1 } /* Literal.Date */
|
||||||
|
.highlight .m { color: #2aa198 } /* Literal.Number */
|
||||||
|
.highlight .s { color: #2aa198 } /* Literal.String */
|
||||||
|
.highlight .na { color: #93a1a1 } /* Name.Attribute */
|
||||||
|
.highlight .nb { color: #B58900 } /* Name.Builtin */
|
||||||
|
.highlight .nc { color: #268bd2 } /* Name.Class */
|
||||||
|
.highlight .no { color: #cb4b16 } /* Name.Constant */
|
||||||
|
.highlight .nd { color: #268bd2 } /* Name.Decorator */
|
||||||
|
.highlight .ni { color: #cb4b16 } /* Name.Entity */
|
||||||
|
.highlight .ne { color: #cb4b16 } /* Name.Exception */
|
||||||
|
.highlight .nf { color: #268bd2 } /* Name.Function */
|
||||||
|
.highlight .nl { color: #93a1a1 } /* Name.Label */
|
||||||
|
.highlight .nn { color: #93a1a1 } /* Name.Namespace */
|
||||||
|
.highlight .nx { color: #93a1a1 } /* Name.Other */
|
||||||
|
.highlight .py { color: #93a1a1 } /* Name.Property */
|
||||||
|
.highlight .nt { color: #268bd2 } /* Name.Tag */
|
||||||
|
.highlight .nv { color: #268bd2 } /* Name.Variable */
|
||||||
|
.highlight .ow { color: #859900 } /* Operator.Word */
|
||||||
|
.highlight .w { color: #93a1a1 } /* Text.Whitespace */
|
||||||
|
.highlight .mf { color: #2aa198 } /* Literal.Number.Float */
|
||||||
|
.highlight .mh { color: #2aa198 } /* Literal.Number.Hex */
|
||||||
|
.highlight .mi { color: #2aa198 } /* Literal.Number.Integer */
|
||||||
|
.highlight .mo { color: #2aa198 } /* Literal.Number.Oct */
|
||||||
|
.highlight .sb { color: #586e75 } /* Literal.String.Backtick */
|
||||||
|
.highlight .sc { color: #2aa198 } /* Literal.String.Char */
|
||||||
|
.highlight .sd { color: #93a1a1 } /* Literal.String.Doc */
|
||||||
|
.highlight .s2 { color: #2aa198 } /* Literal.String.Double */
|
||||||
|
.highlight .se { color: #cb4b16 } /* Literal.String.Escape */
|
||||||
|
.highlight .sh { color: #93a1a1 } /* Literal.String.Heredoc */
|
||||||
|
.highlight .si { color: #2aa198 } /* Literal.String.Interpol */
|
||||||
|
.highlight .sx { color: #2aa198 } /* Literal.String.Other */
|
||||||
|
.highlight .sr { color: #dc322f } /* Literal.String.Regex */
|
||||||
|
.highlight .s1 { color: #2aa198 } /* Literal.String.Single */
|
||||||
|
.highlight .ss { color: #2aa198 } /* Literal.String.Symbol */
|
||||||
|
.highlight .bp { color: #268bd2 } /* Name.Builtin.Pseudo */
|
||||||
|
.highlight .vc { color: #268bd2 } /* Name.Variable.Class */
|
||||||
|
.highlight .vg { color: #268bd2 } /* Name.Variable.Global */
|
||||||
|
.highlight .vi { color: #268bd2 } /* Name.Variable.Instance */
|
||||||
|
.highlight .il { color: #2aa198 } /* Literal.Number.Integer.Long */
|
|
@ -0,0 +1,11 @@
|
||||||
|
{% if GOOGLE_ANALYTICS %}
|
||||||
|
<script type="text/javascript">
|
||||||
|
var gaJsHost = (("https:" == document.location.protocol) ? "https://ssl." : "http://www.");
|
||||||
|
document.write(unescape("%3Cscript src='" + gaJsHost + "google-analytics.com/ga.js' type='text/javascript'%3E%3C/script%3E"));
|
||||||
|
</script>
|
||||||
|
<script type="text/javascript">
|
||||||
|
try {
|
||||||
|
var pageTracker = _gat._getTracker("{{GOOGLE_ANALYTICS}}");
|
||||||
|
pageTracker._trackPageview();
|
||||||
|
} catch(err) {}</script>
|
||||||
|
{% endif %}
|
|
@ -0,0 +1,22 @@
|
||||||
|
{% extends "base.html" %}
|
||||||
|
|
||||||
|
{% block title %}{{ SITENAME }} | Archives{% endblock %}
|
||||||
|
{% block content %}
|
||||||
|
|
||||||
|
<h1>Archives</h1>
|
||||||
|
|
||||||
|
{# based on http://stackoverflow.com/questions/12764291/jinja2-group-by-month-year #}
|
||||||
|
|
||||||
|
{% for year, year_group in dates|groupby('date.year')|reverse %}
|
||||||
|
{% for month, month_group in year_group|groupby('date.month')|reverse %}
|
||||||
|
<h4 class="date">{{ (month_group|first).date|strftime('%b %Y') }}</h4>
|
||||||
|
<div class="post archives">
|
||||||
|
<ul>
|
||||||
|
{% for article in month_group %}
|
||||||
|
<li><a href="{{ SITEURL }}/{{ article.url }}">{{ article.title }}</a></li>
|
||||||
|
{% endfor %}
|
||||||
|
</ul>
|
||||||
|
</div>
|
||||||
|
{% endfor %}
|
||||||
|
{% endfor %}
|
||||||
|
{% endblock %}
|
|
@ -0,0 +1,17 @@
|
||||||
|
{% extends "base.html" %}
|
||||||
|
|
||||||
|
{% block head %}
|
||||||
|
{{ super() }}
|
||||||
|
{% if article.tags %}
|
||||||
|
<meta name="keywords" content="{{ article.tags|join(",") }}" />
|
||||||
|
{% endif %}
|
||||||
|
{% if article.description %}
|
||||||
|
<meta name="description" content="{{ article.description }}" />
|
||||||
|
{% endif %}
|
||||||
|
{% endblock %}
|
||||||
|
|
||||||
|
{% block title %}{{ SITENAME }} | {{ article.title|striptags }}{% endblock %}
|
||||||
|
|
||||||
|
{% block content %}
|
||||||
|
{% include "article_stub.html" %}
|
||||||
|
{% endblock %}
|
|
@ -0,0 +1,37 @@
|
||||||
|
{% if not articles_page or first_article_of_day %}
|
||||||
|
<h4 class="date">{{ article.date.strftime("%b %d, %Y") }}</h4>
|
||||||
|
{% endif %}
|
||||||
|
|
||||||
|
<article class="post">
|
||||||
|
{% if article.title %}
|
||||||
|
<h2 class="title">
|
||||||
|
<a href="{{ SITEURL }}/{{ article.url }}" rel="bookmark" title="Permanent Link to "{{ article.title|striptags }}"">{{ article.title }}</a>
|
||||||
|
</h2>
|
||||||
|
{% endif %}
|
||||||
|
|
||||||
|
{% if not articles_page %}
|
||||||
|
{% include "translations.html" %}
|
||||||
|
{% endif %}
|
||||||
|
|
||||||
|
|
||||||
|
{{ article.content }}
|
||||||
|
<div class="clear"></div>
|
||||||
|
|
||||||
|
<div class="info">
|
||||||
|
<a href="{{ SITEURL }}/{{ article.url }}">posted at {{ article.date.strftime("%H:%M") }}</a>
|
||||||
|
{% if article.category.name != "misc" %}
|
||||||
|
· <a href="{{ SITEURL }}/{{ article.category.url }}" rel="tag">{{ article.category }}</a>
|
||||||
|
{% endif %}
|
||||||
|
{% if article.tags %}
|
||||||
|
·
|
||||||
|
{% for t in article.tags %}
|
||||||
|
<a href="{{ SITEURL }}/{{ t.url }}" class="tags{% if tag and tag.name == t.name %} selected{% endif %}">{{ t }}</a>
|
||||||
|
{% endfor %}
|
||||||
|
{% endif %}
|
||||||
|
</div>
|
||||||
|
{% if articles_page and DISQUS_SITENAME %}
|
||||||
|
<a href="{{ SITEURL }}/{{ article.url }}#disqus_thread">Click to read and post comments</a>
|
||||||
|
{% else %}
|
||||||
|
{% include "disqus.html" %}
|
||||||
|
{% endif %}
|
||||||
|
</article>
|
|
@ -0,0 +1,7 @@
|
||||||
|
{% extends "index.html" %}
|
||||||
|
|
||||||
|
{% block title %}{{ SITENAME }} | Articles by {{ author }}{% endblock %}
|
||||||
|
{% block ephemeral_nav %}
|
||||||
|
|
||||||
|
{{ ephemeral_nav_link(author, output_file, True) }}
|
||||||
|
{% endblock %}
|
|
@ -0,0 +1,105 @@
|
||||||
|
{% macro ephemeral_nav_link(what, where, selected=False) -%}
|
||||||
|
<li class="ephemeral{% if selected %} selected{% endif %}"><a href="{{ SITEURL }}/{{ where }}">{{what}}</a></li>
|
||||||
|
{%- endmacro -%}
|
||||||
|
|
||||||
|
<!DOCTYPE html>
|
||||||
|
<html lang="{{ DEFAULT_LANG }}">
|
||||||
|
<head>
|
||||||
|
{% block head %}
|
||||||
|
<meta charset="utf-8" />
|
||||||
|
<meta name="viewport" content="width=device-width,initial-scale=1">
|
||||||
|
<title>{% block title %}{{ SITENAME }}{% endblock title %}</title>
|
||||||
|
{# favicon #}
|
||||||
|
<link rel="shortcut icon" type="image/png" href="{{ SITEURL }}/favicon.png">
|
||||||
|
<link rel="shortcut icon" type="image/x-icon" href="{{ SITEURL }}/favicon.ico">
|
||||||
|
{% 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(slug=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(slug=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(slug=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(slug=tag.slug) }}" type="application/rss+xml" rel="alternate" title="{{ SITENAME }} Tags RSS Feed" />
|
||||||
|
{% endif %}
|
||||||
|
<link rel="stylesheet" href="{{ SITEURL }}/theme/css/main.css" type="text/css" />
|
||||||
|
<link rel="stylesheet" href="{{ SITEURL }}/theme/css/pygments.css" type="text/css" />
|
||||||
|
<meta name="generator" content="Pelican" />
|
||||||
|
<meta name="description" content="{{ SITEDESCRIPTION }}" />
|
||||||
|
<meta name="author" content="{{ AUTHOR }}" />
|
||||||
|
{% endblock head %}
|
||||||
|
<script src="https://kit.fontawesome.com/0a2f7dbe4a.js" crossorigin="anonymous"></script>
|
||||||
|
</head>
|
||||||
|
<body>
|
||||||
|
{% if DISPLAY_HEADER or DISPLAY_HEADER is not defined %}
|
||||||
|
<header>
|
||||||
|
{% if DISPLAY_MENU or DISPLAY_MENU is not defined %}
|
||||||
|
<nav>
|
||||||
|
<ul>
|
||||||
|
{% block ephemeral_nav %}{% endblock %}
|
||||||
|
{% if DISPLAY_HOME or DISPLAY_HOME is not defined %}
|
||||||
|
<li{% if output_file == "index.html" %} class="selected"{% endif %}><a href="{{ SITEURL }}/">Home</a></li>
|
||||||
|
{% endif %}
|
||||||
|
{% if DISPLAY_PAGES_ON_MENU %}
|
||||||
|
{% for p in pages %}
|
||||||
|
<li{% if p == page %} class="selected"{% endif %}><a href="{{ SITEURL }}/{{ p.url }}">{{ p.title }}</a></li>
|
||||||
|
{% endfor %}
|
||||||
|
{% endif %}
|
||||||
|
{% for title, link in MENUITEMS %}
|
||||||
|
<li><a href="{{ link }}">{{ title }}</a></li>
|
||||||
|
{% endfor %}
|
||||||
|
{% for name, link, file in MENU_INTERNAL_PAGES %}
|
||||||
|
<li{% if output_file == file %} class="selected"{% endif %}><a href="{{ SITEURL }}/{{ link }}">{{ name }}</a></li>
|
||||||
|
{% endfor %}
|
||||||
|
</ul>
|
||||||
|
</nav>
|
||||||
|
{% endif %}
|
||||||
|
<div class="header_box">
|
||||||
|
<h1><a href="{{ SITEURL }}/">{{ SITENAME }}</a></h1>
|
||||||
|
{% if SITESUBTITLE %}
|
||||||
|
<h2>{{ SITESUBTITLE }}</h2>
|
||||||
|
{% endif %}
|
||||||
|
</div>
|
||||||
|
</header>
|
||||||
|
{% endif %}
|
||||||
|
<div id="wrapper">
|
||||||
|
<div id="content">
|
||||||
|
{%- block content -%}{%- endblock %}
|
||||||
|
|
||||||
|
{% if DISPLAY_FOOTER or DISPLAY_FOOTER is not defined %}
|
||||||
|
<div class="clear"></div>
|
||||||
|
<footer>
|
||||||
|
<p>
|
||||||
|
<a href="https://github.com/jody-frankowski/blue-penguin">Blue Penguin</a> Theme
|
||||||
|
·
|
||||||
|
Powered by <a href="http://getpelican.com">Pelican</a>
|
||||||
|
{% if FEED_ALL_ATOM %}
|
||||||
|
·
|
||||||
|
<a href="{{ SITEURL }}/{{ FEED_ALL_ATOM }}" rel="alternate">Atom Feed</a>
|
||||||
|
{% endif %}
|
||||||
|
{% if FEED_ALL_RSS %}
|
||||||
|
·
|
||||||
|
<a href="{{ SITEURL }}/{{ FEED_ALL_RSS }}" rel="alternate">Rss Feed</a>
|
||||||
|
{% endif %}
|
||||||
|
</footer>
|
||||||
|
{% endif %}
|
||||||
|
</div>
|
||||||
|
<div class="clear"></div>
|
||||||
|
</div>
|
||||||
|
{% include 'analytics.html' %}
|
||||||
|
</body>
|
||||||
|
</html>
|
|
@ -0,0 +1,6 @@
|
||||||
|
{% extends "index.html" %}
|
||||||
|
{% block title %}{{ SITENAME }} | articles in the "{{ category }}" category{% if articles_page.number != 1 %} | Page {{ articles_page.number }}{% endif %}{% endblock %}
|
||||||
|
{% block ephemeral_nav %}
|
||||||
|
|
||||||
|
{{ ephemeral_nav_link(category, output_file, True) }}
|
||||||
|
{% endblock %}
|
|
@ -0,0 +1,12 @@
|
||||||
|
{% if DISQUS_SITENAME %}
|
||||||
|
<div id="disqus_thread"></div>
|
||||||
|
<script type="text/javascript">
|
||||||
|
var disqus_shortname = '{{ DISQUS_SITENAME }}';
|
||||||
|
(function() {
|
||||||
|
var dsq = document.createElement('script'); dsq.type = 'text/javascript'; dsq.async = true;
|
||||||
|
dsq.src = '//' + disqus_shortname + '.disqus.com/embed.js';
|
||||||
|
(document.getElementsByTagName('head')[0] || document.getElementsByTagName('body')[0]).appendChild(dsq);
|
||||||
|
})();
|
||||||
|
</script>
|
||||||
|
<noscript>Please enable JavaScript to view the <a href="https://disqus.com/?ref_noscript" rel="nofollow">comments powered by Disqus.</a></noscript>
|
||||||
|
{% endif %}
|
|
@ -0,0 +1,17 @@
|
||||||
|
{% extends "base.html" %}
|
||||||
|
|
||||||
|
{% block title %}{{ SITENAME }}{% if articles_page.number != 1 %} | Page {{ articles_page.number }}{% endif %}{% endblock %}
|
||||||
|
{% block content %}
|
||||||
|
{% set date = None %}
|
||||||
|
{% for article in articles_page.object_list %}
|
||||||
|
{% if date != article.date.date() %}
|
||||||
|
{% set first_article_of_day = True %}
|
||||||
|
{% else %}
|
||||||
|
{% set first_article_of_day = False %}
|
||||||
|
{% endif %}
|
||||||
|
{% set date = article.date.date() %}
|
||||||
|
{% include "article_stub.html" %}
|
||||||
|
{% endfor %}
|
||||||
|
|
||||||
|
{% include "pagination.html" %}
|
||||||
|
{% endblock %}
|
|
@ -0,0 +1,105 @@
|
||||||
|
{% macro ephemeral_nav_link(what, where, selected=False) -%}
|
||||||
|
<li class="ephemeral{% if selected %} selected{% endif %}"><a href="{{ SITEURL }}/{{ where }}">{{what}}</a></li>
|
||||||
|
{%- endmacro -%}
|
||||||
|
|
||||||
|
<!DOCTYPE html>
|
||||||
|
<html lang="{{ DEFAULT_LANG }}">
|
||||||
|
<head>
|
||||||
|
{% block head %}
|
||||||
|
<meta charset="utf-8" />
|
||||||
|
<meta name="viewport" content="width=device-width,initial-scale=1">
|
||||||
|
<title>{% block title %}{{ SITENAME }}{% endblock title %}</title>
|
||||||
|
{# favicon #}
|
||||||
|
<link rel="shortcut icon" type="image/png" href="{{ SITEURL }}/favicon.png">
|
||||||
|
<link rel="shortcut icon" type="image/x-icon" href="{{ SITEURL }}/favicon.ico">
|
||||||
|
{% 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(slug=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(slug=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(slug=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(slug=tag.slug) }}" type="application/rss+xml" rel="alternate" title="{{ SITENAME }} Tags RSS Feed" />
|
||||||
|
{% endif %}
|
||||||
|
<link rel="stylesheet" href="{{ SITEURL }}/theme/css/large.css" type="text/css" />
|
||||||
|
<link rel="stylesheet" href="{{ SITEURL }}/theme/css/pygments.css" type="text/css" />
|
||||||
|
<meta name="generator" content="Pelican" />
|
||||||
|
<meta name="description" content="{{ SITEDESCRIPTION }}" />
|
||||||
|
<meta name="author" content="{{ AUTHOR }}" />
|
||||||
|
{% endblock head %}
|
||||||
|
<script src="https://kit.fontawesome.com/0a2f7dbe4a.js" crossorigin="anonymous"></script>
|
||||||
|
</head>
|
||||||
|
<body>
|
||||||
|
{% if DISPLAY_HEADER or DISPLAY_HEADER is not defined %}
|
||||||
|
<header>
|
||||||
|
{% if DISPLAY_MENU or DISPLAY_MENU is not defined %}
|
||||||
|
<nav>
|
||||||
|
<ul>
|
||||||
|
{% block ephemeral_nav %}{% endblock %}
|
||||||
|
{% if DISPLAY_HOME or DISPLAY_HOME is not defined %}
|
||||||
|
<li{% if output_file == "index.html" %} class="selected"{% endif %}><a href="{{ SITEURL }}/">Home</a></li>
|
||||||
|
{% endif %}
|
||||||
|
{% if DISPLAY_PAGES_ON_MENU %}
|
||||||
|
{% for p in pages %}
|
||||||
|
<li{% if p == page %} class="selected"{% endif %}><a href="{{ SITEURL }}/{{ p.url }}">{{ p.title }}</a></li>
|
||||||
|
{% endfor %}
|
||||||
|
{% endif %}
|
||||||
|
{% for title, link in MENUITEMS %}
|
||||||
|
<li><a href="{{ link }}">{{ title }}</a></li>
|
||||||
|
{% endfor %}
|
||||||
|
{% for name, link, file in MENU_INTERNAL_PAGES %}
|
||||||
|
<li{% if output_file == file %} class="selected"{% endif %}><a href="{{ SITEURL }}/{{ link }}">{{ name }}</a></li>
|
||||||
|
{% endfor %}
|
||||||
|
</ul>
|
||||||
|
</nav>
|
||||||
|
{% endif %}
|
||||||
|
<div class="header_box">
|
||||||
|
<h1><a href="{{ SITEURL }}/">{{ SITENAME }}</a></h1>
|
||||||
|
{% if SITESUBTITLE %}
|
||||||
|
<h2>{{ SITESUBTITLE }}</h2>
|
||||||
|
{% endif %}
|
||||||
|
</div>
|
||||||
|
</header>
|
||||||
|
{% endif %}
|
||||||
|
<div id="wrapper">
|
||||||
|
<div id="content">
|
||||||
|
{%- block content -%}{%- endblock %}
|
||||||
|
|
||||||
|
{% if DISPLAY_FOOTER or DISPLAY_FOOTER is not defined %}
|
||||||
|
<div class="clear"></div>
|
||||||
|
<footer>
|
||||||
|
<p>
|
||||||
|
<a href="https://github.com/jody-frankowski/blue-penguin">Blue Penguin</a> Theme
|
||||||
|
·
|
||||||
|
Powered by <a href="http://getpelican.com">Pelican</a>
|
||||||
|
{% if FEED_ALL_ATOM %}
|
||||||
|
·
|
||||||
|
<a href="{{ SITEURL }}/{{ FEED_ALL_ATOM }}" rel="alternate">Atom Feed</a>
|
||||||
|
{% endif %}
|
||||||
|
{% if FEED_ALL_RSS %}
|
||||||
|
·
|
||||||
|
<a href="{{ SITEURL }}/{{ FEED_ALL_RSS }}" rel="alternate">Rss Feed</a>
|
||||||
|
{% endif %}
|
||||||
|
</footer>
|
||||||
|
{% endif %}
|
||||||
|
</div>
|
||||||
|
<div class="clear"></div>
|
||||||
|
</div>
|
||||||
|
{% include 'analytics.html' %}
|
||||||
|
</body>
|
||||||
|
</html>
|
|
@ -0,0 +1,11 @@
|
||||||
|
{% extends "base.html" %}
|
||||||
|
|
||||||
|
{% block title %}{{ SITENAME }} | {{ page.title }}{% endblock %}
|
||||||
|
|
||||||
|
{% block content %}
|
||||||
|
|
||||||
|
<div class="page">
|
||||||
|
<h1>{{ page.title }}</h1>
|
||||||
|
{{ page.content }}
|
||||||
|
</div>
|
||||||
|
{% endblock %}
|
|
@ -0,0 +1,17 @@
|
||||||
|
{# Use PAGINATION_PATTERNS or pagination may break #}
|
||||||
|
{% if DEFAULT_PAGINATION and (articles_page.has_previous() or articles_page.has_next()) %}
|
||||||
|
|
||||||
|
<div class="clear"></div>
|
||||||
|
<div class="pages">
|
||||||
|
|
||||||
|
{% if articles_page.has_previous() %}
|
||||||
|
<a href="{{ SITEURL }}/{{ articles_previous_page.url }}" class="prev_page">← Previous</a>
|
||||||
|
{% endif %}
|
||||||
|
|
||||||
|
{% if articles_page.has_next() %}
|
||||||
|
<a href="{{ SITEURL }}/{{ articles_next_page.url }}" class="next_page">Next →</a>
|
||||||
|
{% endif %}
|
||||||
|
|
||||||
|
<span>Page {{ articles_page.number }} of {{ articles_paginator.num_pages }}</span>
|
||||||
|
</div>
|
||||||
|
{% endif %}
|
|
@ -0,0 +1,5 @@
|
||||||
|
{% extends "index.html" %}
|
||||||
|
{% block title %}{{ SITENAME }} | articles tagged "{{ tag }}"{% if articles_page.number != 1 %} | Page {{ articles_page.number }}{% endif %}{% endblock %}
|
||||||
|
{% block ephemeral_nav %}
|
||||||
|
{{ ephemeral_nav_link(tag, output_file, True) }}
|
||||||
|
{% endblock %}
|
|
@ -0,0 +1,8 @@
|
||||||
|
{% extends "base.html" %}
|
||||||
|
{% block content %}
|
||||||
|
<ul>
|
||||||
|
{% for tag, articles in tags %}
|
||||||
|
<li><a href="{{ SITEURL }}/{{ tag.url }}">{{ tag }}</a></li>
|
||||||
|
{% endfor %}
|
||||||
|
</ul>
|
||||||
|
{% endblock %}
|
|
@ -0,0 +1,6 @@
|
||||||
|
{% if article.translations %}
|
||||||
|
Translations:
|
||||||
|
{% for translation in article.translations %}
|
||||||
|
<a href="{{ SITEURL }}/{{ translation.url }}">{{ translation.lang }}</a>
|
||||||
|
{% endfor %}
|
||||||
|
{% endif %}
|
Loading…
Reference in New Issue