@ -0,0 +1,6 @@ |
|||||||
|
.git |
||||||
|
.DS_Store |
||||||
|
*.pyc |
||||||
|
output/* |
||||||
|
themes/* |
||||||
|
cache |
@ -0,0 +1,119 @@ |
|||||||
|
PY?=python
|
||||||
|
PELICAN?=pelican
|
||||||
|
PELICANOPTS=
|
||||||
|
|
||||||
|
BASEDIR=$(CURDIR)
|
||||||
|
INPUTDIR=$(BASEDIR)/content
|
||||||
|
OUTPUTDIR=$(BASEDIR)/output
|
||||||
|
CONFFILE=$(BASEDIR)/pelicanconf.py
|
||||||
|
PUBLISHCONF=$(BASEDIR)/publishconf.py
|
||||||
|
|
||||||
|
FTP_HOST=localhost
|
||||||
|
FTP_USER=anonymous
|
||||||
|
FTP_TARGET_DIR=/
|
||||||
|
|
||||||
|
SSH_HOST=localhost
|
||||||
|
SSH_PORT=22
|
||||||
|
SSH_USER=root
|
||||||
|
SSH_TARGET_DIR=/var/www
|
||||||
|
|
||||||
|
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/
|
||||||
|
|
||||||
|
GITHUB_PAGES_BRANCH=gh-pages
|
||||||
|
|
||||||
|
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 serve-global [SERVER=0.0.0.0] serve (as root) to $(SERVER):80 '
|
||||||
|
@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 |
||||||
|
|
||||||
|
serve-global: |
||||||
|
ifdef SERVER |
||||||
|
cd $(OUTPUTDIR) && $(PY) -m pelican.server 80 $(SERVER)
|
||||||
|
else |
||||||
|
cd $(OUTPUTDIR) && $(PY) -m pelican.server 80 0.0.0.0
|
||||||
|
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 -rvzc --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 --guess-mime-type
|
||||||
|
|
||||||
|
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 -m "Generate Pelican site" -b $(GITHUB_PAGES_BRANCH) $(OUTPUTDIR)
|
||||||
|
git push origin $(GITHUB_PAGES_BRANCH)
|
||||||
|
|
||||||
|
.PHONY: html help clean regenerate serve serve-global devserver publish ssh_upload rsync_upload dropbox_upload ftp_upload s3_upload cf_upload github |
@ -0,0 +1,10 @@ |
|||||||
|
title: Projects |
||||||
|
date: Jan 29, 2015 |
||||||
|
|
||||||
|
The things we're doing: |
||||||
|
|
||||||
|
||| |
||||||
|
-|-|- |
||||||
|
![#ShowtimesTH](http://zzyzx.co/static/showtimes-logo-144.png) | [#ShowtimesTH](http://showtimes.everyday.in.th/) | [![Play Store](http://zzyzx.co/static/en_generic_rgb_wo_45.png)](https://play.google.com/store/apps/details?id=co.zzyzx.showtimes.android) |
||||||
|
![Expensy](http://getexpensy.com/static/images/logo_144.png) | [Expensy](http://getexpensy.com) | [![Play Store](http://zzyzx.co/static/en_generic_rgb_wo_45.png)](https://play.google.com/store/apps/details?id=co.zzyzx.expensy) |
||||||
|
| |
@ -0,0 +1,103 @@ |
|||||||
|
#!/usr/bin/env bash |
||||||
|
## |
||||||
|
# This section should match your Makefile |
||||||
|
## |
||||||
|
PY=${PY:-python} |
||||||
|
PELICAN=${PELICAN:-pelican} |
||||||
|
PELICANOPTS= |
||||||
|
|
||||||
|
BASEDIR=$(pwd) |
||||||
|
INPUTDIR=$BASEDIR/content |
||||||
|
OUTPUTDIR=$BASEDIR/output |
||||||
|
CONFFILE=$BASEDIR/pelicanconf.py |
||||||
|
|
||||||
|
### |
||||||
|
# Don't change stuff below here unless you are sure |
||||||
|
### |
||||||
|
|
||||||
|
SRV_PID=$BASEDIR/srv.pid |
||||||
|
PELICAN_PID=$BASEDIR/pelican.pid |
||||||
|
|
||||||
|
function usage(){ |
||||||
|
echo "usage: $0 (stop) (start) (restart) [port]" |
||||||
|
echo "This starts Pelican in debug and reload mode and then launches" |
||||||
|
echo "an HTTP server to help site development. It doesn't read" |
||||||
|
echo "your Pelican settings, so if you edit any paths in your Makefile" |
||||||
|
echo "you will need to edit your settings as well." |
||||||
|
exit 3 |
||||||
|
} |
||||||
|
|
||||||
|
function alive() { |
||||||
|
kill -0 $1 >/dev/null 2>&1 |
||||||
|
} |
||||||
|
|
||||||
|
function shut_down(){ |
||||||
|
PID=$(cat $SRV_PID) |
||||||
|
if [[ $? -eq 0 ]]; then |
||||||
|
if alive $PID; then |
||||||
|
echo "Stopping HTTP server" |
||||||
|
kill $PID |
||||||
|
else |
||||||
|
echo "Stale PID, deleting" |
||||||
|
fi |
||||||
|
rm $SRV_PID |
||||||
|
else |
||||||
|
echo "HTTP server PIDFile not found" |
||||||
|
fi |
||||||
|
|
||||||
|
PID=$(cat $PELICAN_PID) |
||||||
|
if [[ $? -eq 0 ]]; then |
||||||
|
if alive $PID; then |
||||||
|
echo "Killing Pelican" |
||||||
|
kill $PID |
||||||
|
else |
||||||
|
echo "Stale PID, deleting" |
||||||
|
fi |
||||||
|
rm $PELICAN_PID |
||||||
|
else |
||||||
|
echo "Pelican PIDFile not found" |
||||||
|
fi |
||||||
|
} |
||||||
|
|
||||||
|
function start_up(){ |
||||||
|
local port=$1 |
||||||
|
echo "Starting up Pelican and HTTP server" |
||||||
|
shift |
||||||
|
$PELICAN --debug --autoreload -r $INPUTDIR -o $OUTPUTDIR -s $CONFFILE $PELICANOPTS & |
||||||
|
pelican_pid=$! |
||||||
|
echo $pelican_pid > $PELICAN_PID |
||||||
|
cd $OUTPUTDIR |
||||||
|
$PY -m pelican.server $port & |
||||||
|
srv_pid=$! |
||||||
|
echo $srv_pid > $SRV_PID |
||||||
|
cd $BASEDIR |
||||||
|
sleep 1 |
||||||
|
if ! alive $pelican_pid ; then |
||||||
|
echo "Pelican didn't start. Is the Pelican package installed?" |
||||||
|
return 1 |
||||||
|
elif ! alive $srv_pid ; then |
||||||
|
echo "The HTTP server didn't start. Is there another service using port" $port "?" |
||||||
|
return 1 |
||||||
|
fi |
||||||
|
echo 'Pelican and HTTP server processes now running in background.' |
||||||
|
} |
||||||
|
|
||||||
|
### |
||||||
|
# MAIN |
||||||
|
### |
||||||
|
[[ ($# -eq 0) || ($# -gt 2) ]] && usage |
||||||
|
port='' |
||||||
|
[[ $# -eq 2 ]] && port=$2 |
||||||
|
|
||||||
|
if [[ $1 == "stop" ]]; then |
||||||
|
shut_down |
||||||
|
elif [[ $1 == "restart" ]]; then |
||||||
|
shut_down |
||||||
|
start_up $port |
||||||
|
elif [[ $1 == "start" ]]; then |
||||||
|
if ! start_up $port; then |
||||||
|
shut_down |
||||||
|
fi |
||||||
|
else |
||||||
|
usage |
||||||
|
fi |
@ -0,0 +1,104 @@ |
|||||||
|
from fabric.api import * |
||||||
|
import fabric.contrib.project as project |
||||||
|
import os |
||||||
|
import shutil |
||||||
|
import sys |
||||||
|
import SimpleHTTPServer |
||||||
|
import SocketServer |
||||||
|
|
||||||
|
|
||||||
|
theme_path = '/Volumes/momentus-xt/home/sipp11/dev/pelican-themes/twenty-html5up/' |
||||||
|
# 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' |
||||||
|
|
||||||
|
# Github Pages configuration |
||||||
|
env.github_pages_branch = "gh-pages" |
||||||
|
|
||||||
|
# Port for `serve` |
||||||
|
PORT = 8000 |
||||||
|
|
||||||
|
def clean(): |
||||||
|
"""Remove generated files""" |
||||||
|
if os.path.isdir(DEPLOY_PATH): |
||||||
|
shutil.rmtree(DEPLOY_PATH) |
||||||
|
os.makedirs(DEPLOY_PATH) |
||||||
|
|
||||||
|
def build(): |
||||||
|
"""Build local version of site""" |
||||||
|
local('pelican -s pelicanconf.py') |
||||||
|
|
||||||
|
def rebuild(): |
||||||
|
"""`clean` then `build`""" |
||||||
|
clean() |
||||||
|
build() |
||||||
|
|
||||||
|
def regenerate(): |
||||||
|
"""Automatically regenerate site upon file modification""" |
||||||
|
local('pelican -r -s pelicanconf.py') |
||||||
|
|
||||||
|
def serve(): |
||||||
|
"""Serve site at http://localhost:8000/""" |
||||||
|
os.chdir(env.deploy_path) |
||||||
|
|
||||||
|
class AddressReuseTCPServer(SocketServer.TCPServer): |
||||||
|
allow_reuse_address = True |
||||||
|
|
||||||
|
server = AddressReuseTCPServer(('', PORT), SimpleHTTPServer.SimpleHTTPRequestHandler) |
||||||
|
|
||||||
|
sys.stderr.write('Serving on port {0} ...\n'.format(PORT)) |
||||||
|
server.serve_forever() |
||||||
|
|
||||||
|
def reserve(): |
||||||
|
"""`build`, then `serve`""" |
||||||
|
build() |
||||||
|
serve() |
||||||
|
|
||||||
|
def preview(): |
||||||
|
"""Build production version of site""" |
||||||
|
local('pelican -s publishconf.py') |
||||||
|
|
||||||
|
def cf_upload(): |
||||||
|
"""Publish to Rackspace Cloud Files""" |
||||||
|
rebuild() |
||||||
|
with lcd(DEPLOY_PATH): |
||||||
|
local('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(): |
||||||
|
"""Publish to production via rsync""" |
||||||
|
local('pelican -s publishconf.py') |
||||||
|
project.rsync_project( |
||||||
|
remote_dir=dest_path, |
||||||
|
exclude=".DS_Store", |
||||||
|
local_dir=DEPLOY_PATH.rstrip('/') + '/', |
||||||
|
delete=True, |
||||||
|
extra_opts='-c', |
||||||
|
) |
||||||
|
|
||||||
|
def gh_pages(): |
||||||
|
"""Publish to GitHub Pages""" |
||||||
|
rebuild() |
||||||
|
local("ghp-import -b {github_pages_branch} {deploy_path}".format(**env)) |
||||||
|
local("git push origin {github_pages_branch}".format(**env)) |
||||||
|
|
||||||
|
|
||||||
|
def collectstatic(): |
||||||
|
if os.path.isdir(DEPLOY_PATH): |
||||||
|
local('mkdir -p {deploy_path}/css/ {deploy_path}/js/ {deploy_path}/fonts/ {deploy_path}/images/'.format(**env)) |
||||||
|
local('cp -rf {theme_path}/twenty/static/css/* {deploy_path}/css/'.format(**env)) |
||||||
|
local('cp -rf {theme_path}/twenty/static/js/* {deploy_path}/js/'.format(**env)) |
||||||
|
local('cp -rf {theme_path}/twenty/static/fonts/* {deploy_path}/fonts/'.format(**env)) |
||||||
|
local('cp -rf {theme_path}/twenty/static/images/* {deploy_path}/images/'.format(**env)) |
@ -0,0 +1,23 @@ |
|||||||
|
from jinja2.utils import Markup |
||||||
|
from jinja2._compat import text_type |
||||||
|
import re |
||||||
|
|
||||||
|
|
||||||
|
def do_stringtags_and_img(value): |
||||||
|
""" |
||||||
|
Strip SGML/XML tags and replace adjacent whitespace by one space. |
||||||
|
""" |
||||||
|
if hasattr(value, '__html__'): |
||||||
|
value = value.__html__() |
||||||
|
no_img_part = re.sub(r'<img(.?)*src=\"(.?)*[\"\s\/>]+?', "", value) |
||||||
|
return Markup(text_type(no_img_part)).striptags() |
||||||
|
|
||||||
|
|
||||||
|
def sidebar(value): |
||||||
|
value = '%s' % value |
||||||
|
if value.startswith('archives') or value.startswith('category'): |
||||||
|
return 'right-sidebar' |
||||||
|
elif value == 'index': |
||||||
|
return 'index' |
||||||
|
else: |
||||||
|
return 'no-sidebar' |
@ -0,0 +1,68 @@ |
|||||||
|
#!/usr/bin/env python |
||||||
|
# -*- coding: utf-8 -*- # |
||||||
|
from __future__ import unicode_literals |
||||||
|
|
||||||
|
AUTHOR = u'sipp11' |
||||||
|
SITENAME = u'everyday' |
||||||
|
SITEURL = 'http://everyday.in.th' |
||||||
|
|
||||||
|
PATH = 'content' |
||||||
|
|
||||||
|
TIMEZONE = 'Asia/Bangkok' |
||||||
|
|
||||||
|
DEFAULT_LANG = u'th' |
||||||
|
PDF_GENERATOR = True |
||||||
|
DISQUS_SITENAME = 'everyday-in-th' |
||||||
|
GOOGLE_ANALYTICS = 'UA-34877059-5' |
||||||
|
# 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 |
||||||
|
|
||||||
|
ARTICLE_PATHS = ['blog', 'tech'] |
||||||
|
ARTICLE_SAVE_AS = '{date:%Y}/{date:%m}/{slug}/index.html' |
||||||
|
ARTICLE_URL = '{date:%Y}/{date:%m}/{slug}/' |
||||||
|
|
||||||
|
PAGE_URL = 'pages/{slug}/' |
||||||
|
PAGE_SAVE_AS = 'pages/{slug}/index.html' |
||||||
|
|
||||||
|
CATEGORY_URL = 'category/{slug}/' |
||||||
|
CATEGORY_SAVE_AS = 'category/{slug}/index.html' |
||||||
|
|
||||||
|
TAG_URL = 'tag/{slug}/' |
||||||
|
TAG_SAVE_AS = 'tag/{slug}/index.html' |
||||||
|
|
||||||
|
DISPLAY_PAGES_ON_MENU = True |
||||||
|
|
||||||
|
TYPOGRIFY = True |
||||||
|
|
||||||
|
# Blogroll |
||||||
|
LINKS = ( |
||||||
|
# ('Pelican', 'http://getpelican.com/'), |
||||||
|
# ('Python.org', 'http://python.org/'), |
||||||
|
# ('Jinja2', 'http://jinja.pocoo.org/'), |
||||||
|
) |
||||||
|
|
||||||
|
# Social widget |
||||||
|
SOCIAL = ( |
||||||
|
) |
||||||
|
|
||||||
|
AUTHORS = { |
||||||
|
u'sipp11': '/about.html', |
||||||
|
} |
||||||
|
DEFAULT_PAGINATION = 10 |
||||||
|
|
||||||
|
# Uncomment following line if you want document-relative URLs when developing |
||||||
|
RELATIVE_URLS = True |
||||||
|
THEME = 'themes/notmyideaever' |
||||||
|
# THEME = 'themes/chameleon' |
||||||
|
|
||||||
|
import sys |
||||||
|
sys.path.append('.') |
||||||
|
from filters import sidebar, do_stringtags_and_img |
||||||
|
JINJA_FILTERS = { |
||||||
|
'sidebar': sidebar, |
||||||
|
'stringtags_and_img': do_stringtags_and_img, |
||||||
|
} |
@ -0,0 +1,24 @@ |
|||||||
|
#!/usr/bin/env python |
||||||
|
# -*- coding: utf-8 -*- # |
||||||
|
from __future__ import unicode_literals |
||||||
|
|
||||||
|
# This file is only used if you use `make publish` or |
||||||
|
# explicitly specify it as your config file. |
||||||
|
|
||||||
|
import os |
||||||
|
import sys |
||||||
|
sys.path.append(os.curdir) |
||||||
|
from pelicanconf import * |
||||||
|
|
||||||
|
SITEURL = '' |
||||||
|
RELATIVE_URLS = False |
||||||
|
|
||||||
|
FEED_ALL_ATOM = 'feeds/all.atom.xml' |
||||||
|
CATEGORY_FEED_ATOM = 'feeds/%s.atom.xml' |
||||||
|
|
||||||
|
DELETE_OUTPUT_DIRECTORY = True |
||||||
|
|
||||||
|
# Following items are often useful when publishing |
||||||
|
|
||||||
|
#DISQUS_SITENAME = "" |
||||||
|
#GOOGLE_ANALYTICS = "" |
@ -0,0 +1,454 @@ |
|||||||
|
/* |
||||||
|
Name: Smashing HTML5 |
||||||
|
Date: July 2009 |
||||||
|
Description: Sample layout for HTML5 and CSS3 goodness. |
||||||
|
Version: 1.0 |
||||||
|
License: MIT <http://opensource.org/licenses/MIT> |
||||||
|
Licensed by: Smashing Media GmbH <http://www.smashingmagazine.com/> |
||||||
|
Original author: Enrique Ramírez <http://enrique-ramirez.com/> |
||||||
|
*/ |
||||||
|
|
||||||
|
/* Imports */ |
||||||
|
@import url("reset.css"); |
||||||
|
@import url("pygment.css"); |
||||||
|
@import url("typogrify.css"); |
||||||
|
@import url(//fonts.googleapis.com/css?family=Yanone+Kaffeesatz&subset=latin); |
||||||
|
|
||||||
|
/***** Global *****/ |
||||||
|
/* Body */ |
||||||
|
body { |
||||||
|
background: #F5F4EF; |
||||||
|
color: #000305; |
||||||
|
font-size: 87.5%; /* Base font size: 14px */ |
||||||
|
font-family: 'Trebuchet MS', Trebuchet, 'Lucida Sans Unicode', 'Lucida Grande', 'Lucida Sans', Arial, sans-serif; |
||||||
|
line-height: 1.429; |
||||||
|
margin: 0; |
||||||
|
padding: 0; |
||||||
|
text-align: left; |
||||||
|
} |
||||||
|
|
||||||
|
/* Headings */ |
||||||
|
h1 {font-size: 2em } |
||||||
|
h2 {font-size: 1.571em} /* 22px */ |
||||||
|
h3 {font-size: 1.429em} /* 20px */ |
||||||
|
h4 {font-size: 1.286em} /* 18px */ |
||||||
|
h5 {font-size: 1.143em} /* 16px */ |
||||||
|
h6 {font-size: 1em} /* 14px */ |
||||||
|
|
||||||
|
h1, h2, h3, h4, h5, h6 { |
||||||
|
font-weight: 400; |
||||||
|
line-height: 1.1; |
||||||
|
margin-bottom: .8em; |
||||||
|
font-family: 'Yanone Kaffeesatz', arial, serif; |
||||||
|
} |
||||||
|
|
||||||
|
h3, h4, h5, h6 { margin-top: .8em; } |
||||||
|
|
||||||
|
hr { border: 2px solid #EEEEEE; } |
||||||
|
|
||||||
|
p>img { width: 100%; } |
||||||
|
.muted { color: #aaa; } |
||||||
|
|
||||||
|
/* Anchors */ |
||||||
|
a {outline: 0;} |
||||||
|
a img {border: 0px; text-decoration: none;} |
||||||
|
a:link, a:visited { |
||||||
|
color: #C74350; |
||||||
|
padding: 0 1px; |
||||||
|
text-decoration: underline; |
||||||
|
} |
||||||
|
a:hover, a:active { |
||||||
|
background-color: #C74350; |
||||||
|
color: #fff; |
||||||
|
text-decoration: none; |
||||||
|
text-shadow: 1px 1px 1px #333; |
||||||
|
} |
||||||
|
|
||||||
|
h1 a:hover { |
||||||
|
background-color: inherit |
||||||
|
} |
||||||
|
|
||||||
|
/* Paragraphs */ |
||||||
|
div.line-block, |
||||||
|
p { margin-top: 1em; |
||||||
|
margin-bottom: 1em;} |
||||||
|
|
||||||
|
strong, b {font-weight: bold;} |
||||||
|
em, i {font-style: italic;} |
||||||
|
|
||||||
|
/* Lists */ |
||||||
|
ul { |
||||||
|
list-style: outside disc; |
||||||
|
margin: 0em 0 0 1.5em; |
||||||
|
} |
||||||
|
|
||||||
|
ol { |
||||||
|
list-style: outside decimal; |
||||||
|
margin: 0em 0 0 1.5em; |
||||||
|
} |
||||||
|
|
||||||
|
li { margin-top: 0.5em;} |
||||||
|
|
||||||
|
.post-info { |
||||||
|
float:right; |
||||||
|
margin:10px; |
||||||
|
padding:5px; |
||||||
|
} |
||||||
|
|
||||||
|
.post-info p{ |
||||||
|
margin-top: 1px; |
||||||
|
margin-bottom: 1px; |
||||||
|
} |
||||||
|
|
||||||
|
.readmore { float: right } |
||||||
|
|
||||||
|
dl {margin: 0 0 1.5em 0;} |
||||||
|
dt {font-weight: bold;} |
||||||
|
dd {margin-left: 1.5em;} |
||||||
|
|
||||||
|
pre{background-color: rgb(238, 238, 238); padding: 10px; margin: 10px; overflow: auto;} |
||||||
|
|
||||||
|
/* Quotes */ |
||||||
|
blockquote { |
||||||
|
margin: 20px; |
||||||
|
font-style: italic; |
||||||
|
} |
||||||
|
cite {} |
||||||
|
|
||||||
|
q {} |
||||||
|
|
||||||
|
div.note { |
||||||
|
float: right; |
||||||
|
margin: 5px; |
||||||
|
font-size: 85%; |
||||||
|
max-width: 300px; |
||||||
|
} |
||||||
|
|
||||||
|
/* Tables */ |
||||||
|
table {margin: .5em auto 1.5em auto; width: 98%;} |
||||||
|
|
||||||
|
/* Thead */ |
||||||
|
thead th {padding: .5em .4em; text-align: left;} |
||||||
|
thead td {} |
||||||
|
|
||||||
|
/* Tbody */ |
||||||
|
tbody td {padding: .5em .4em;} |
||||||
|
tbody th {} |
||||||
|
|
||||||
|
tbody .alt td {} |
||||||
|
tbody .alt th {} |
||||||
|
|
||||||
|
/* Tfoot */ |
||||||
|
tfoot th {} |
||||||
|
tfoot td {} |
||||||
|
|
||||||
|
/* HTML5 tags */ |
||||||
|
header, section, footer, |
||||||
|
aside, nav, article, figure { |
||||||
|
display: block; |
||||||
|
} |
||||||
|
|
||||||
|
/***** Layout *****/ |
||||||
|
.body {clear: both; margin: 0 auto; width: 800px;} |
||||||
|
img.right, figure.right {float: right; margin: 0 0 2em 2em;} |
||||||
|
img.left, figure.left {float: left; margin: 0 2em 2em 0;} |
||||||
|
|
||||||
|
/* |
||||||
|
Header |
||||||
|
*****************/ |
||||||
|
#banner { |
||||||
|
margin: 0 auto; |
||||||
|
padding: 2.5em 0 0 0; |
||||||
|
} |
||||||
|
|
||||||
|
/* Banner */ |
||||||
|
#banner h1 {font-size: 3.571em; line-height: 0;} |
||||||
|
#banner h1 a:link, #banner h1 a:visited { |
||||||
|
color: #000305; |
||||||
|
display: block; |
||||||
|
font-weight: bold; |
||||||
|
margin: 0 0 .6em .2em; |
||||||
|
text-decoration: none; |
||||||
|
} |
||||||
|
#banner h1 a:hover, #banner h1 a:active { |
||||||
|
background: none; |
||||||
|
color: #C74350; |
||||||
|
text-shadow: none; |
||||||
|
} |
||||||
|
|
||||||
|
#banner h1 strong {font-size: 0.36em; font-weight: normal;} |
||||||
|
|
||||||
|
/* Main Nav */ |
||||||
|
#banner nav { |
||||||
|
background: #000305; |
||||||
|
font-size: 1.143em; |
||||||
|
height: 40px; |
||||||
|
line-height: 30px; |
||||||
|
margin: 0 auto 2em auto; |
||||||
|
padding: 0; |
||||||
|
text-align: center; |
||||||
|
width: 800px; |
||||||
|
|
||||||
|
border-radius: 5px; |
||||||
|
-moz-border-radius: 5px; |
||||||
|
-webkit-border-radius: 5px; |
||||||
|
} |
||||||
|
|
||||||
|
#banner nav ul {list-style: none; margin: 0 auto; width: 800px;} |
||||||
|
#banner nav li {float: left; display: inline; margin: 0;} |
||||||
|
|
||||||
|
#banner nav a:link, #banner nav a:visited { |
||||||
|
color: #fff; |
||||||
|
display: inline-block; |
||||||
|
height: 30px; |
||||||
|
padding: 5px 1.5em; |
||||||
|
text-decoration: none; |
||||||
|
} |
||||||
|
#banner nav a:hover, #banner nav a:active, |
||||||
|
#banner nav .active a:link, #banner nav .active a:visited { |
||||||
|
background: #C74451; |
||||||
|
color: #fff; |
||||||
|
text-shadow: none !important; |
||||||
|
} |
||||||
|
|
||||||
|
#banner nav li:first-child a { |
||||||
|
border-top-left-radius: 5px; |
||||||
|
-moz-border-radius-topleft: 5px; |
||||||
|
-webkit-border-top-left-radius: 5px; |
||||||
|
|
||||||
|
border-bottom-left-radius: 5px; |
||||||
|
-moz-border-radius-bottomleft: 5px; |
||||||
|
-webkit-border-bottom-left-radius: 5px; |
||||||
|
} |
||||||
|
|
||||||
|
/* |
||||||
|
Featured |
||||||
|
*****************/ |
||||||
|
#featured { |
||||||
|
background: #fff; |
||||||
|
margin-bottom: 2em; |
||||||
|
overflow: hidden; |
||||||
|
padding: 20px; |
||||||
|
width: 760px; |
||||||
|
|
||||||
|
border-radius: 10px; |
||||||
|
-moz-border-radius: 10px; |
||||||
|
-webkit-border-radius: 10px; |
||||||
|
} |
||||||
|
|
||||||
|
#featured figure { |
||||||
|
border: 2px solid #eee; |
||||||
|
float: right; |
||||||
|
margin: 0.786em 2em 0 5em; |
||||||
|
width: 248px; |
||||||
|
} |
||||||
|
#featured figure img {display: block; float: right;} |
||||||
|
|
||||||
|
#featured h2 {color: #C74451; font-size: 1.714em; margin-bottom: 0.333em;} |
||||||
|
#featured h3 {font-size: 1.429em; margin-bottom: .5em;} |
||||||
|
|
||||||
|
#featured h3 a:link, #featured h3 a:visited {color: #000305; text-decoration: none;} |
||||||
|
#featured h3 a:hover, #featured h3 a:active {color: #fff;} |
||||||
|
|
||||||
|
/* |
||||||
|
Body |
||||||
|
*****************/ |
||||||
|
#content { |
||||||
|
background: #fff; |
||||||
|
margin-bottom: 2em; |
||||||
|
overflow: hidden; |
||||||
|
padding: 20px 20px; |
||||||
|
width: 760px; |
||||||
|
|
||||||
|
border-radius: 10px; |
||||||
|
-moz-border-radius: 10px; |
||||||
|
-webkit-border-radius: 10px; |
||||||
|
} |
||||||
|
|
||||||
|
/* |
||||||
|
Extras |
||||||
|
*****************/ |
||||||
|
#extras {margin: 0 auto 3em auto; overflow: hidden;} |
||||||
|
|
||||||
|
#extras ul {list-style: none; margin: 0;} |
||||||
|
#extras li {border-bottom: 1px solid #fff;} |
||||||
|
#extras h2 { |
||||||
|
color: #C74350; |
||||||
|
font-size: 1.429em; |
||||||
|
margin-bottom: .25em; |
||||||
|
padding: 0 3px; |
||||||
|
} |
||||||
|
|
||||||
|
#extras a:link, #extras a:visited { |
||||||
|
color: #444; |
||||||
|
display: block; |
||||||
|
border-bottom: 1px solid #F4E3E3; |
||||||
|
text-decoration: none; |
||||||
|
padding: .3em .25em; |
||||||
|
} |
||||||
|
|
||||||
|
#extras a:hover, #extras a:active {color: #fff;} |
||||||
|
|
||||||
|
/* Blogroll */ |
||||||
|
#extras .blogroll { |
||||||
|
float: left; |
||||||
|
width: 615px; |
||||||
|
} |
||||||
|
|
||||||
|
#extras .blogroll li {float: left; margin: 0 20px 0 0; width: 185px;} |
||||||
|
|
||||||
|
/* Social */ |
||||||
|
#extras .social { |
||||||
|
float: right; |
||||||
|
width: 175px; |
||||||
|
} |
||||||
|
|
||||||
|
#extras div[class='social'] a { |
||||||
|
background-repeat: no-repeat; |
||||||
|
background-position: 3px 6px; |
||||||
|
padding-left: 25px; |
||||||
|
} |
||||||
|
|
||||||
|
/* Icons */ |
||||||
|
.social a[href*='about.me'] {background-image: url('../images/icons/aboutme.png');} |
||||||
|
.social a[href*='bitbucket.org'] {background-image: url('../images/icons/bitbucket.png');} |
||||||
|
.social a[href*='delicious.com'] {background-image: url('../images/icons/delicious.png');} |
||||||
|
.social a[href*='digg.com'] {background-image: url('../images/icons/digg.png');} |
||||||
|
.social a[href*='facebook.com'] {background-image: url('../images/icons/facebook.png');} |
||||||
|
.social a[href*='gitorious.org'] {background-image: url('../images/icons/gitorious.png');} |
||||||
|
.social a[href*='github.com'], |
||||||
|
.social a[href*='git.io'] { |
||||||
|
background-image: url('../images/icons/github.png'); |
||||||
|
background-size: 16px 16px; |
||||||
|
} |
||||||
|
.social a[href*='gittip.com'] {background-image: url('../images/icons/gittip.png');} |
||||||
|
.social a[href*='plus.google.com'] {background-image: url('../images/icons/google-plus.png');} |
||||||
|
.social a[href*='groups.google.com'] {background-image: url('../images/icons/google-groups.png');} |
||||||
|
.social a[href*='news.ycombinator.com'], |
||||||
|
.social a[href*='hackernewsers.com'] {background-image: url('../images/icons/hackernews.png');} |
||||||
|
.social a[href*='last.fm'], .social a[href*='lastfm.'] {background-image: url('../images/icons/lastfm.png');} |
||||||
|
.social a[href*='linkedin.com'] {background-image: url('../images/icons/linkedin.png');} |
||||||
|
.social a[href*='reddit.com'] {background-image: url('../images/icons/reddit.png');} |
||||||
|
.social a[type$='atom+xml'], .social a[type$='rss+xml'] {background-image: url('../images/icons/rss.png');} |
||||||
|
.social a[href*='slideshare.net'] {background-image: url('../images/icons/slideshare.png');} |
||||||
|
.social a[href*='speakerdeck.com'] {background-image: url('../images/icons/speakerdeck.png');} |
||||||
|
.social a[href*='stackoverflow.com'] {background-image: url('../images/icons/stackoverflow.png');} |
||||||
|
.social a[href*='twitter.com'] {background-image: url('../images/icons/twitter.png');} |
||||||
|
.social a[href*='vimeo.com'] {background-image: url('../images/icons/vimeo.png');} |
||||||
|
.social a[href*='youtube.com'] {background-image: url('../images/icons/youtube.png');} |
||||||
|
|
||||||
|
/* |
||||||
|
About |
||||||
|
*****************/ |
||||||
|
#about { |
||||||
|
background: #fff; |
||||||
|
font-style: normal; |
||||||
|
margin-bottom: 2em; |
||||||
|
overflow: hidden; |
||||||
|
padding: 20px; |
||||||
|
text-align: left; |
||||||
|
width: 760px; |
||||||
|
|
||||||
|
border-radius: 10px; |
||||||
|
-moz-border-radius: 10px; |
||||||
|
-webkit-border-radius: 10px; |
||||||
|
} |
||||||
|
|
||||||
|
#about .primary {float: left; width: 165px;} |
||||||
|
#about .primary strong {color: #C64350; display: block; font-size: 1.286em;} |
||||||
|
#about .photo {float: left; margin: 5px 20px;} |
||||||
|
|
||||||
|
#about .url:link, #about .url:visited {text-decoration: none;} |
||||||
|
|
||||||
|
#about .bio {float: right; width: 500px;} |
||||||
|
|
||||||
|
/* |
||||||
|
Footer |
||||||
|
*****************/ |
||||||
|
#contentinfo {padding-bottom: 2em; text-align: right;} |
||||||
|
|
||||||
|
/***** Sections *****/ |
||||||
|
/* Blog */ |
||||||
|
.hentry { |
||||||
|
display: block; |
||||||
|
clear: both; |
||||||
|
border-bottom: 1px solid #eee; |
||||||
|
padding: 1.5em 0; |
||||||
|
} |
||||||
|
li:last-child .hentry, #content > .hentry {border: 0; margin: 0;} |
||||||
|
#content > .hentry {padding: 1em 0;} |
||||||
|
.hentry img{display : none ;} |
||||||
|
.entry-title {font-size: 3em; margin-bottom: 10px; margin-top: 0;} |
||||||
|
.entry-title a:link, .entry-title a:visited {text-decoration: none; color: #333;} |
||||||
|
.entry-title a:visited {background-color: #fff;} |
||||||
|
|
||||||
|
.hentry .post-info * {font-style: normal;} |
||||||
|
|
||||||
|
/* Content */ |
||||||
|
.hentry footer {margin-bottom: 2em;} |
||||||
|
.hentry footer address {display: inline;} |
||||||
|
#posts-list footer address {display: block;} |
||||||
|
|
||||||
|
/* Blog Index */ |
||||||
|
#posts-list {list-style: none; margin: 0;} |
||||||
|
#posts-list .hentry {padding-left: 10px; position: relative;} |
||||||
|
|
||||||
|
#posts-list footer { |
||||||
|
left: 10px; |
||||||
|
position: relative; |
||||||
|
float: left; |
||||||
|
top: 0.5em; |
||||||
|
width: 190px; |
||||||
|
} |
||||||
|
|
||||||
|
/* About the Author */ |
||||||
|
#about-author { |
||||||
|
background: #f9f9f9; |
||||||
|
clear: both; |
||||||
|
font-style: normal; |
||||||
|
margin: 2em 0; |
||||||
|
padding: 10px 20px 15px 20px; |
||||||
|
|
||||||
|
border-radius: 5px; |
||||||
|
-moz-border-radius: 5px; |
||||||
|
-webkit-border-radius: 5px; |
||||||
|
} |
||||||
|
|
||||||
|
#about-author strong { |
||||||
|
color: #C64350; |
||||||
|
clear: both; |
||||||
|
display: block; |
||||||
|
font-size: 1.429em; |
||||||
|
} |
||||||
|
|
||||||
|
#about-author .photo {border: 1px solid #ddd; float: left; margin: 5px 1em 0 0;} |
||||||
|
|
||||||
|
/* Comments */ |
||||||
|
#comments-list {list-style: none; margin: 0 1em;} |
||||||
|
#comments-list blockquote { |
||||||
|
background: #f8f8f8; |
||||||
|
clear: both; |
||||||
|
font-style: normal; |
||||||
|
margin: 0; |
||||||
|
padding: 15px 20px; |
||||||
|
|
||||||
|
border-radius: 5px; |
||||||
|
-moz-border-radius: 5px; |
||||||
|
-webkit-border-radius: 5px; |
||||||
|
} |
||||||
|
#comments-list footer {color: #888; padding: .5em 1em 0 0; text-align: right;} |
||||||
|
|
||||||
|
#comments-list li:nth-child(2n) blockquote {background: #F5f5f5;} |
||||||
|
|
||||||
|
/* Add a Comment */ |
||||||
|
#add-comment label {clear: left; float: left; text-align: left; width: 150px;} |
||||||
|
#add-comment input[type='text'], |
||||||
|
#add-comment input[type='email'], |
||||||
|
#add-comment input[type='url'] {float: left; width: 200px;} |
||||||
|
|
||||||
|
#add-comment textarea {float: left; height: 150px; width: 495px;} |
||||||
|
|
||||||
|
#add-comment p.req {clear: both; margin: 0 .5em 1em 0; text-align: right;} |
||||||
|
|
||||||
|
#add-comment input[type='submit'] {float: right; margin: 0 .5em;} |
||||||
|
#add-comment * {margin-bottom: .5em;} |
@ -0,0 +1,205 @@ |
|||||||
|
.hll { |
||||||
|
background-color:#eee; |
||||||
|
} |
||||||
|
.c { |
||||||
|
color:#408090; |
||||||
|
font-style:italic; |
||||||
|
} |
||||||
|
.err { |
||||||
|
border:1px solid #FF0000; |
||||||
|
} |
||||||
|
.k { |
||||||
|
color:#007020; |
||||||
|
font-weight:bold; |
||||||
|
} |
||||||
|
.o { |
||||||
|
color:#666666; |
||||||
|
} |
||||||
|
.cm { |
||||||
|
color:#408090; |
||||||
|
font-style:italic; |
||||||
|
} |
||||||
|
.cp { |
||||||
|
color:#007020; |
||||||
|
} |
||||||
|
.c1 { |
||||||
|
color:#408090; |
||||||
|
font-style:italic; |
||||||
|
} |
||||||
|
.cs { |
||||||
|
background-color:#FFF0F0; |
||||||
|
color:#408090; |
||||||
|
} |
||||||
|
.gd { |
||||||
|
color:#A00000; |
||||||
|
} |
||||||
|
.ge { |
||||||
|
font-style:italic; |
||||||
|
} |
||||||
|
.gr { |
||||||
|
color:#FF0000; |
||||||
|
} |
||||||
|
.gh { |
||||||
|
color:#000080; |
||||||
|
font-weight:bold; |
||||||
|
} |
||||||
|
.gi { |
||||||
|
color:#00A000; |
||||||
|
} |
||||||
|
.go { |
||||||
|
color:#303030; |
||||||
|
} |
||||||
|
.gp { |
||||||
|
color:#C65D09; |
||||||
|
font-weight:bold; |
||||||
|
} |
||||||
|
.gs { |
||||||
|
font-weight:bold; |
||||||
|
} |
||||||
|
.gu { |
||||||
|
color:#800080; |
||||||
|
font-weight:bold; |
||||||
|
} |
||||||
|
.gt { |
||||||
|
color:#0040D0; |
||||||
|
} |
||||||
|
.kc { |
||||||
|
color:#007020; |
||||||
|
font-weight:bold; |
||||||
|
} |
||||||
|
.kd { |
||||||
|
color:#007020; |
||||||
|
font-weight:bold; |
||||||
|
} |
||||||
|
.kn { |
||||||
|
color:#007020; |
||||||
|
font-weight:bold; |
||||||
|
} |
||||||
|
.kp { |
||||||
|
color:#007020; |
||||||
|
} |
||||||
|
.kr { |
||||||
|
color:#007020; |
||||||
|
font-weight:bold; |
||||||
|
} |
||||||
|
.kt { |
||||||
|
color:#902000; |
||||||
|
} |
||||||
|
.m { |
||||||
|
color:#208050; |
||||||
|
} |
||||||
|
.s { |
||||||
|
color:#4070A0; |
||||||
|
} |
||||||
|
.na { |
||||||
|
color:#4070A0; |
||||||
|
} |
||||||
|
.nb { |
||||||
|
color:#007020; |
||||||
|
} |
||||||
|
.nc { |
||||||
|
color:#0E84B5; |
||||||
|
font-weight:bold; |
||||||
|
} |
||||||
|
.no { |
||||||
|
color:#60ADD5; |
||||||
|
} |
||||||
|
.nd { |
||||||
|
color:#555555; |
||||||
|
font-weight:bold; |
||||||
|
} |
||||||
|
.ni { |
||||||
|
color:#D55537; |
||||||
|
font-weight:bold; |
||||||
|
} |
||||||
|
.ne { |
||||||
|
color:#007020; |
||||||
|
} |
||||||
|
.nf { |
||||||
|
color:#06287E; |
||||||
|
} |
||||||
|
.nl { |
||||||
|
color:#002070; |
||||||
|
font-weight:bold; |
||||||
|
} |
||||||
|
.nn { |
||||||
|
color:#0E84B5; |
||||||
|
font-weight:bold; |
||||||
|
} |
||||||
|
.nt { |
||||||
|
color:#062873; |
||||||
|
font-weight:bold; |
||||||
|
} |
||||||
|
.nv { |
||||||
|
color:#BB60D5; |
||||||
|
} |
||||||
|
.ow { |
||||||
|
color:#007020; |
||||||
|
font-weight:bold; |
||||||
|
} |
||||||
|
.w { |
||||||
|
color:#BBBBBB; |
||||||
|
} |
||||||
|
.mf { |
||||||
|
color:#208050; |
||||||
|
} |
||||||
|
.mh { |
||||||
|
color:#208050; |
||||||
|
} |
||||||
|
.mi { |
||||||
|
color:#208050; |
||||||
|
} |
||||||
|
.mo { |
||||||
|
color:#208050; |
||||||
|
} |
||||||
|
.sb { |
||||||
|
color:#4070A0; |
||||||
|
} |
||||||
|
.sc { |
||||||
|
color:#4070A0; |
||||||
|
} |
||||||
|
.sd { |
||||||
|
color:#4070A0; |
||||||
|
font-style:italic; |
||||||
|
} |
||||||
|
.s2 { |
||||||
|
color:#4070A0; |
||||||
|
} |
||||||
|
.se { |
||||||
|
color:#4070A0; |
||||||
|
font-weight:bold; |
||||||
|
} |
||||||
|
.sh { |
||||||
|
color:#4070A0; |
||||||
|
} |
||||||
|
.si { |
||||||
|
color:#70A0D0; |
||||||
|
font-style:italic; |
||||||
|
} |
||||||
|
.sx { |
||||||
|
color:#C65D09; |
||||||
|
} |
||||||
|
.sr { |
||||||
|
color:#235388; |
||||||
|
} |
||||||
|
.s1 { |
||||||
|
color:#4070A0; |
||||||
|
} |
||||||
|
.ss { |
||||||
|
color:#517918; |
||||||
|
} |
||||||
|
.bp { |
||||||
|
color:#007020; |
||||||
|
} |
||||||
|
.vc { |
||||||
|
color:#BB60D5; |
||||||
|
} |
||||||
|
.vg { |
||||||
|
color:#BB60D5; |
||||||
|
} |
||||||
|
.vi { |
||||||
|
color:#BB60D5; |
||||||
|
} |
||||||
|
.il { |
||||||
|
color:#208050; |
||||||
|
} |
@ -0,0 +1,52 @@ |
|||||||
|
/* |
||||||
|
Name: Reset Stylesheet |
||||||
|
Description: Resets browser's default CSS |
||||||
|
Author: Eric Meyer |
||||||
|
Author URI: http://meyerweb.com/eric/tools/css/reset/ |
||||||
|
*/ |
||||||
|
|
||||||
|
/* v1.0 | 20080212 */ |
||||||
|
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, font, img, ins, kbd, q, s, samp, |
||||||
|
small, strike, strong, sub, sup, tt, var, |
||||||
|
b, u, i, center, |
||||||
|
dl, dt, dd, ol, ul, li, |
||||||
|
fieldset, form, label, legend, |
||||||
|
table, caption, tbody, tfoot, thead, tr, th, td { |
||||||
|
background: transparent; |
||||||
|
border: 0; |
||||||
|
font-size: 100%; |
||||||
|
margin: 0; |
||||||
|
outline: 0; |
||||||
|
padding: 0; |
||||||
|
vertical-align: baseline; |
||||||
|
} |
||||||
|
|
||||||
|
body {line-height: 1;} |
||||||
|
|
||||||
|
ol, ul {list-style: none;} |
||||||
|
|
||||||
|
blockquote, q {quotes: none;} |
||||||
|
|
||||||
|
blockquote:before, blockquote:after, |
||||||
|
q:before, q:after { |
||||||
|
content: ''; |
||||||
|
content: none; |
||||||
|
} |
||||||
|
|
||||||
|
/* remember to define focus styles! */ |
||||||
|
:focus { |
||||||
|
outline: 0; |
||||||
|
} |
||||||
|
|
||||||
|
/* remember to highlight inserts somehow! */ |
||||||
|
ins {text-decoration: none;} |
||||||
|
del {text-decoration: line-through;} |
||||||
|
|
||||||
|
/* tables still need 'cellspacing="0"' in the markup */ |
||||||
|
table { |
||||||
|
border-collapse: collapse; |
||||||
|
border-spacing: 0; |
||||||
|
} |
@ -0,0 +1,3 @@ |
|||||||
|
.caps {font-size:.92em;} |
||||||
|
.amp {color:#666; font-size:1.05em;font-family:"Warnock Pro", "Goudy Old Style","Palatino","Book Antiqua",serif; font-style:italic;} |
||||||
|
.dquo {margin-left:-.38em;} |
@ -0,0 +1,48 @@ |
|||||||
|
@import url("main.css"); |
||||||
|
|
||||||
|
body { |
||||||
|
font:1.3em/1.3 "Hoefler Text","Georgia",Georgia,serif,sans-serif; |
||||||
|
} |
||||||
|
|
||||||
|
.post-info{ |
||||||
|
display: none; |
||||||
|
} |
||||||
|
|
||||||
|
#banner nav { |
||||||
|
display: none; |
||||||
|
-moz-border-radius: 0px; |
||||||
|
margin-bottom: 20px; |
||||||
|
overflow: hidden; |
||||||
|
font-size: 1em; |
||||||
|
background: #F5F4EF; |
||||||
|
} |
||||||
|
|
||||||
|
#banner nav ul{ |
||||||
|
padding-right: 50px; |
||||||
|
} |
||||||
|
|
||||||
|
#banner nav li{ |
||||||
|
float: right; |
||||||
|
color: #000; |
||||||
|
} |
||||||
|
|
||||||
|
#banner nav li a { |
||||||
|
color: #000; |
||||||
|
} |
||||||
|
|
||||||
|
#banner h1 { |
||||||
|
margin-bottom: -18px; |
||||||
|
} |
||||||
|
|
||||||
|
#featured, #extras { |
||||||
|
padding: 50px; |
||||||
|
} |
||||||
|
|
||||||
|
#featured { |
||||||
|
padding-top: 20px; |
||||||
|
} |
||||||
|
|
||||||
|
#extras { |
||||||
|
padding-top: 0px; |
||||||
|
padding-bottom: 0px; |
||||||
|
} |
After Width: | Height: | Size: 751 B |
After Width: | Height: | Size: 3.6 KiB |
After Width: | Height: | Size: 958 B |
After Width: | Height: | Size: 202 B |
After Width: | Height: | Size: 1.7 KiB |
After Width: | Height: | Size: 227 B |
After Width: | Height: | Size: 487 B |
After Width: | Height: | Size: 803 B |
After Width: | Height: | Size: 527 B |
After Width: | Height: | Size: 3.2 KiB |
After Width: | Height: | Size: 975 B |
After Width: | Height: | Size: 896 B |
After Width: | Height: | Size: 693 B |
After Width: | Height: | Size: 879 B |
After Width: | Height: | Size: 535 B |
After Width: | Height: | Size: 1.0 KiB |
After Width: | Height: | Size: 916 B |
After Width: | Height: | Size: 830 B |
After Width: | Height: | Size: 544 B |
After Width: | Height: | Size: 458 B |
@ -0,0 +1,46 @@ |
|||||||
|
{% if GOOGLE_ANALYTICS %} |
||||||
|
<script type="text/javascript"> |
||||||
|
var _gaq = _gaq || []; |
||||||
|
_gaq.push(['_setAccount', '{{GOOGLE_ANALYTICS}}']); |
||||||
|
_gaq.push(['_trackPageview']); |
||||||
|
(function() { |
||||||
|
var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true; |
||||||
|
ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js'; |
||||||
|
var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s); |
||||||
|
})(); |
||||||
|
</script> |
||||||
|
{% endif %} |
||||||
|
{% if GAUGES %} |
||||||
|
<script type="text/javascript"> |
||||||
|
var _gauges = _gauges || []; |
||||||
|
(function() { |
||||||
|
var t = document.createElement('script'); |
||||||
|
t.type = 'text/javascript'; |
||||||
|
t.async = true; |
||||||
|
t.id = 'gauges-tracker'; |
||||||
|
t.setAttribute('data-site-id', '{{GAUGES}}'); |
||||||
|
t.src = '//secure.gaug.es/track.js'; |
||||||
|
var s = document.getElementsByTagName('script')[0]; |
||||||
|
s.parentNode.insertBefore(t, s); |
||||||
|
})(); |
||||||
|
</script> |
||||||
|
{% endif %} |
||||||
|
{% if PIWIK_URL and PIWIK_SITE_ID %} |
||||||
|
<script type="text/javascript"> |
||||||
|
{% if PIWIK_SSL_URL %} |
||||||
|
var pkBaseURL = "{{ PIWIK_SSL_URL }}"; |
||||||
|
{% else %} |
||||||
|
var pkBaseURL = "{{ PIWIK_URL }}"; |
||||||
|
{% endif %} |
||||||
|
var _paq = _paq || []; |
||||||
|
_paq.push(["trackPageView"]); |
||||||
|
_paq.push(["enableLinkTracking"]); |
||||||
|
(function() { |
||||||
|
var u=(("https:" == document.location.protocol) ? "https" : "http")+"://"+pkBaseURL+"/"; |
||||||
|
_paq.push(["setTrackerUrl", u+"piwik.php"]); |
||||||
|
_paq.push(["setSiteId", "{{ PIWIK_SITE_ID }}"]); |
||||||
|
var d=document, g=d.createElement("script"), s=d.getElementsByTagName("script")[0]; g.type="text/javascript"; |
||||||
|
g.defer=true; g.async=true; g.src=u+"piwik.js"; s.parentNode.insertBefore(g,s); |
||||||
|
})(); |
||||||
|
</script> |
||||||
|
{% endif %} |
@ -0,0 +1,13 @@ |
|||||||
|
{% extends "base.html" %} |
||||||
|
{% block content %} |
||||||
|
<section id="content" class="body"> |
||||||
|
<h1>Archives for {{ SITENAME }}</h1> |
||||||
|
|
||||||
|
<dl> |
||||||
|
{% for article in dates %} |
||||||
|
<dt>{{ article.locale_date }}</dt> |
||||||
|
<dd><a href="{{ SITEURL }}/{{ article.url }}">{{ article.title }}</a></dd> |
||||||
|
{% endfor %} |
||||||
|
</dl> |
||||||
|
</section> |
||||||
|
{% endblock %} |
@ -0,0 +1,41 @@ |
|||||||
|
{% extends "base.html" %} |
||||||
|
{% block title %}{{ article.title|striptags }}{% endblock %} |
||||||
|
{% block content %} |
||||||
|
<section id="content" class="body"> |
||||||
|
<article> |
||||||
|
<header> |
||||||
|
<h1 class="entry-title"> |
||||||
|
<a href="{{ SITEURL }}/{{ article.url }}" rel="bookmark" |
||||||
|
title="Permalink to {{ article.title|striptags }}">{{ article.title }}</a></h1> |
||||||
|
{% include 'twitter.html' %} |
||||||
|
</header> |
||||||
|
|
||||||
|
<div class="entry-content"> |
||||||
|
{% include 'article_infos.html' %} |
||||||
|
{{ article.content }} |
||||||
|
</div><!-- /.entry-content --> |
||||||
|
|
||||||
|
{% include 'most_recent.html' %} |
||||||
|
<br/><br/> |
||||||
|
|
||||||
|
{% if DISQUS_SITENAME and SITEURL and article.status != "draft" %} |
||||||
|
<div class="comments"> |
||||||
|
<h2>Comments !</h2> |
||||||
|
<div id="disqus_thread"></div> |
||||||
|
<script type="text/javascript"> |
||||||
|
var disqus_shortname = '{{ DISQUS_SITENAME }}'; |
||||||
|
var disqus_identifier = '{{ article.url }}'; |
||||||
|
var disqus_url = '{{ SITEURL }}/{{ article.url }}'; |
||||||
|
(function() { |
||||||
|
var dsq = document.createElement('script'); dsq.type = 'text/javascript'; dsq.async = true; |
||||||
|
dsq.src = '//{{ DISQUS_SITENAME }}.disqus.com/embed.js'; |
||||||
|
(document.getElementsByTagName('head')[0] || document.getElementsByTagName('body')[0]).appendChild(dsq); |
||||||
|
})(); |
||||||
|
</script> |
||||||
|
<noscript>Please enable JavaScript to view the comments.</noscript> |
||||||
|
</div> |
||||||
|
{% endif %} |
||||||
|
|
||||||
|
</article> |
||||||
|
</section> |
||||||
|
{% endblock %} |
@ -0,0 +1,23 @@ |
|||||||
|
<footer class="post-info"> |
||||||
|
<abbr class="published" title="{{ article.date.isoformat() }}"> |
||||||
|
Published: {{ article.locale_date }} |
||||||
|
</abbr> |
||||||
|
{% if article.modified %} |
||||||
|
<br /> |
||||||
|
<abbr class="modified" title="{{ article.modified.isoformat() }}"> |
||||||
|
Updated: {{ article.locale_modified }} |
||||||
|
</abbr> |
||||||
|
{% endif %} |
||||||
|
|
||||||
|
{% if article.authors %} |
||||||
|
<address class="vcard author"> |
||||||
|
By {% for author in article.authors %} |
||||||
|
<a class="url fn" href="{{ SITEURL }}/{{ author.url }}">{{ author }}</a> |
||||||
|
{% endfor %} |
||||||
|
</address> |
||||||
|
{% endif %} |
||||||
|
<p>In <a href="{{ SITEURL }}/{{ article.category.url }}">{{ article.category }}</a>. {% if PDF_PROCESSOR %}<a href="{{ SITEURL }}/pdf/{{ article.slug }}.pdf">get the pdf</a>{% endif %}</p> |
||||||
|
{% include 'taglist.html' %} |
||||||
|
{% import 'translations.html' as translations with context %} |
||||||
|
{{ translations.translations_for(article) }} |
||||||
|
</footer><!-- /.post-info --> |
@ -0,0 +1,2 @@ |
|||||||
|
{% extends "index.html" %} |
||||||
|
{% block title %}{{ SITENAME }} - {{ author }}{% endblock %} |
@ -0,0 +1,16 @@ |
|||||||
|
{% extends "base.html" %} |
||||||
|
|
||||||
|
{% block title %}{{ SITENAME }} - Authors{% endblock %} |
||||||
|
|
||||||
|
{% block content %} |
||||||
|
|
||||||
|
<section id="content" class="body"> |
||||||
|
<h1>Authors on {{ SITENAME }}</h1> |
||||||
|
<ul> |
||||||
|
{% for author, articles in authors|sort %} |
||||||
|
<li><a href="{{ SITEURL }}/{{ author.url }}">{{ author }}</a> ({{ articles|count }})</li> |
||||||
|
{% endfor %} |
||||||
|
</ul> |
||||||
|
</section> |
||||||
|
|
||||||
|
{% endblock %} |
@ -0,0 +1,82 @@ |
|||||||
|
<!DOCTYPE html> |
||||||
|
<html lang="{{ DEFAULT_LANG }}"> |
||||||
|
<head> |
||||||
|
<meta charset="utf-8" /> |
||||||
|
<title>{% block title %}{{ SITENAME }}{%endblock%}</title> |
||||||
|
<link rel="stylesheet" href="{{ SITEURL }}/{{ THEME_STATIC_DIR }}/css/{{ CSS_FILE }}" /> |
||||||
|
{% if FEED_ALL_ATOM %} |
||||||
|
<link href="{{ FEED_DOMAIN }}/{{ FEED_ALL_ATOM }}" type="application/atom+xml" rel="alternate" title="{{ SITENAME }} Atom Feed" /> |
||||||
|
{% endif %} |
||||||
|
{% if FEED_ALL_RSS %} |
||||||
|
<link href="{{ FEED_DOMAIN }}/{{ FEED_ALL_RSS }}" type="application/rss+xml" rel="alternate" title="{{ SITENAME }} RSS Feed" /> |
||||||
|
{% endif %} |
||||||
|
|
||||||
|
<!--[if IE]> |
||||||
|
<script src="http://html5shiv.googlecode.com/svn/trunk/html5.js"></script> |
||||||
|
<![endif]--> |
||||||
|
</head> |
||||||
|
|
||||||
|
<body id="index" class="home"> |
||||||
|
{% include 'github.html' %} |
||||||
|
<header id="banner" class="body"> |
||||||
|
<h1><a href="{{ SITEURL }}/">{{ SITENAME }} {% if SITESUBTITLE %} <strong>{{ SITESUBTITLE }}</strong>{% endif %}</a></h1> |
||||||
|
<nav><ul> |
||||||
|
{% for title, link in MENUITEMS %} |
||||||
|
<li><a href="{{ link }}">{{ title }}</a></li> |
||||||
|
{% endfor %} |
||||||
|
{% if DISPLAY_PAGES_ON_MENU -%} |
||||||
|
{% for pg in PAGES %} |
||||||
|
<li{% if pg == page %} class="active"{% endif %}><a href="{{ SITEURL }}/{{ pg.url }}">{{ pg.title }}</a></li> |
||||||
|
{% endfor %} |
||||||
|
{% endif %} |
||||||
|
{% if DISPLAY_CATEGORIES_ON_MENU -%} |
||||||
|
{% for cat, null in categories %} |
||||||
|
<li{% if cat == category %} class="active"{% endif %}><a href="{{ SITEURL }}/{{ cat.url }}">{{ cat }}</a></li> |
||||||
|
{% endfor %} |
||||||
|
{% endif %} |
||||||
|
</ul></nav> |
||||||
|
</header><!-- /#banner --> |
||||||
|
{% block content %} |
||||||
|
{% endblock %} |
||||||
|
<section id="extras" class="body"> |
||||||
|
{% if LINKS %} |
||||||
|
<div class="blogroll"> |
||||||
|
<h2>blogroll</h2> |
||||||
|
<ul> |
||||||
|
{% for name, link in LINKS %} |
||||||
|
<li><a href="{{ link }}">{{ name }}</a></li> |
||||||
|
{% endfor %} |
||||||
|
</ul> |
||||||
|
</div><!-- /.blogroll --> |
||||||
|
{% endif %} |
||||||
|
{% if SOCIAL or FEED_ALL_ATOM or FEED_ALL_RSS %} |
||||||
|
<div class="social"> |
||||||
|
<h2>social</h2> |
||||||
|
<ul> |
||||||
|
{% if FEED_ALL_ATOM %} |
||||||
|
<li><a href="{{ FEED_DOMAIN }}/{{ FEED_ALL_ATOM }}" type="application/atom+xml" rel="alternate">atom feed</a></li> |
||||||
|
{% endif %} |
||||||
|
{% if FEED_ALL_RSS %} |
||||||
|
<li><a href="{{ FEED_DOMAIN }}/{{ FEED_ALL_RSS }}" type="application/rss+xml" rel="alternate">rss feed</a></li> |
||||||
|
{% endif %} |
||||||
|
|
||||||
|
{% for name, link in SOCIAL %} |
||||||
|
<li><a href="{{ link }}">{{ name }}</a></li> |
||||||
|
{% endfor %} |
||||||
|
</ul> |
||||||
|
</div><!-- /.social --> |
||||||
|
{% endif %} |
||||||
|
</section><!-- /#extras --> |
||||||
|
|
||||||
|
<footer id="contentinfo" class="body"> |
||||||
|
<address id="about" class="vcard body"> |
||||||
|
Proudly powered by <a href="http://getpelican.com/">Pelican</a>, which takes great advantage of <a href="http://python.org">Python</a>. |
||||||
|
</address><!-- /#about --> |
||||||
|
|
||||||
|
<p>The theme is by <a href="http://coding.smashingmagazine.com/2009/08/04/designing-a-html-5-layout-from-scratch/">Smashing Magazine</a>, thanks!</p> |
||||||
|
</footer><!-- /#contentinfo --> |
||||||
|
|
||||||
|
{% include 'analytics.html' %} |
||||||
|
{% include 'disqus_script.html' %} |
||||||
|
</body> |
||||||
|
</html> |
@ -0,0 +1,2 @@ |
|||||||
|
{% extends "index.html" %} |
||||||
|
{% block title %}{{ SITENAME }} - {{ category }}{% endblock %} |
@ -0,0 +1 @@ |
|||||||
|
{% if DISQUS_SITENAME %}<p>There are <a href="{{ SITEURL }}/{{ article.url }}#disqus_thread">comments</a>.</p>{% endif %} |
@ -0,0 +1,11 @@ |
|||||||
|
{% if DISQUS_SITENAME %} |
||||||
|
<script type="text/javascript"> |
||||||
|
var disqus_shortname = '{{ DISQUS_SITENAME }}'; |
||||||
|
(function () { |
||||||
|
var s = document.createElement('script'); s.async = true; |
||||||
|
s.type = 'text/javascript'; |
||||||
|
s.src = '//' + disqus_shortname + '.disqus.com/count.js'; |
||||||
|
(document.getElementsByTagName('HEAD')[0] || document.getElementsByTagName('BODY')[0]).appendChild(s); |
||||||
|
}()); |
||||||
|
</script> |
||||||
|
{% endif %} |
@ -0,0 +1,9 @@ |
|||||||
|
{% if GITHUB_URL %} |
||||||
|
<a href="{{ GITHUB_URL }}"> |
||||||
|
{% if GITHUB_POSITION != "left" %} |
||||||
|
<img style="position: absolute; top: 0; right: 0; border: 0;" src="http://s3.amazonaws.com/github/ribbons/forkme_right_red_aa0000.png" alt="Fork me on GitHub" /> |
||||||
|
{% else %} |
||||||
|
<img style="position: absolute; top: 0; left: 0; border: 0;" src="http://s3.amazonaws.com/github/ribbons/forkme_left_white_ffffff.png" alt="Fork me on GitHub" /> |
||||||
|
{% endif %} |
||||||
|
</a> |
||||||
|
{% endif %} |
@ -0,0 +1,64 @@ |
|||||||
|
{% extends "base.html" %} |
||||||
|
{% block content_title %}{% endblock %} |
||||||
|
{% block content %} |
||||||
|
{% if articles %} |
||||||
|
{% for article in articles_page.object_list %} |
||||||
|
|
||||||
|
{# First item #} |
||||||
|
{% if loop.first and not articles_page.has_previous() %} |
||||||
|
<aside id="featured" class="body"> |
||||||
|
<article> |
||||||
|
<h1 class="entry-title"><a href="{{ SITEURL }}/{{ article.url }}">{{ article.title }}</a></h1> |
||||||
|
{% include 'article_infos.html' %}{{ article.content }}{% include 'comments.html' %} |
||||||
|
</article> |
||||||
|
{% if loop.length == 1 %} |
||||||
|
{% include 'pagination.html' %} |
||||||
|
{% endif %} |
||||||
|
</aside><!-- /#featured --> |
||||||
|
{% if loop.length > 1 %} |
||||||
|
<section id="content" class="body"> |
||||||
|
<h1>Other articles</h1> |
||||||
|
<hr /> |
||||||
|
<ol id="posts-list" class="hfeed"> |
||||||
|
{% endif %} |
||||||
|
{# other items #} |
||||||
|
{% else %} |
||||||
|
{% if loop.first and articles_page.has_previous %} |
||||||
|
<section id="content" class="body"> |
||||||
|
<ol id="posts-list" class="hfeed" start="{{ articles_paginator.per_page -1 }}"> |
||||||
|
{% endif %} |
||||||
|
<li><article class="hentry"> |
||||||
|
<header> |
||||||
|
<h1><a href="{{ SITEURL }}/{{ article.url }}" rel="bookmark" |
||||||
|
title="Permalink to {{ article.title|striptags }}">{{ article.title }}</a></h1> |
||||||
|
</header> |
||||||
|
|
||||||
|
<div class="entry-content"> |
||||||
|
{% include 'article_infos.html' %} |
||||||
|
{{ article.summary }} |
||||||
|
<a class="readmore" href="{{ SITEURL }}/{{ article.url }}">read more</a> |
||||||
|
{% include 'comments.html' %} |
||||||
|
</div><!-- /.entry-content --> |
||||||
|
</article></li> |
||||||
|
{% endif %} |
||||||
|
{% if loop.last %} |
||||||
|
{% if loop.length > 1 %} |
||||||
|
</ol><!-- /#posts-list --> |
||||||
|
{% endif %} |
||||||
|
{% if articles_page.has_previous() or loop.length > 1 %} |
||||||
|
{% include 'pagination.html' %} |
||||||
|
{% endif %} |
||||||
|
{% if loop.length > 1 %} |
||||||
|
</section><!-- /#content --> |
||||||
|
{% endif %} |
||||||
|
{% endif %} |
||||||
|
{% endfor %} |
||||||
|
{% else %} |
||||||
|
<section id="content" class="body"> |
||||||
|
<h2>Pages</h2> |
||||||
|
{% for page in PAGES %} |
||||||
|
<li><a href="{{ SITEURL }}/{{ page.url }}">{{ page.title }}</a></li> |
||||||
|
{% endfor %} |
||||||
|
</section> |
||||||
|
{% endif %} |
||||||
|
{% endblock content %} |
@ -0,0 +1,14 @@ |
|||||||
|
<section class="wrapper style1 container special"> |
||||||
|
<br/> |
||||||
|
<h2>Most Recents</h2> |
||||||
|
<div class="row"> |
||||||
|
<ul> |
||||||
|
{% for article in articles[:3] %} |
||||||
|
<li> |
||||||
|
<a href="{{ SITEURL }}/{{ article.url }}" rel='bookmark'>{{ article.title }}</a> |
||||||
|
{{ article.content[:196]|stringtags_and_img }} <span class="muted">{{ article.locale_date }}</span> |
||||||
|
</li> |
||||||
|
{% endfor %} |
||||||
|
</ul> |
||||||
|
</div> |
||||||
|
</section> |
@ -0,0 +1,12 @@ |
|||||||
|
{% extends "base.html" %} |
||||||
|
{% block title %}{{ page.title }}{% endblock %} |
||||||
|
{% block content %} |
||||||
|
<section id="content" class="body"> |
||||||
|
<h1 class="entry-title">{{ page.title }}</h1> |
||||||
|
{% import 'translations.html' as translations with context %} |
||||||
|
{{ translations.translations_for(page) }} |
||||||
|
{% if PDF_PROCESSOR %}<a href="{{ SITEURL }}/pdf/{{ page.slug }}.pdf">get |
||||||
|
the pdf</a>{% endif %} |
||||||
|
{{ page.content }} |
||||||
|
</section> |
||||||
|
{% endblock %} |
@ -0,0 +1,13 @@ |
|||||||
|
{% extends "base.html" %} |
||||||
|
{% block content %} |
||||||
|
<section id="content" class="body"> |
||||||
|
<h1>Archives for {{ period | reverse | join(' ') }}</h1> |
||||||
|
|
||||||
|
<dl> |
||||||
|
{% for article in dates %} |
||||||
|
<dt>{{ article.locale_date }}</dt> |
||||||
|
<dd><a href="{{ SITEURL }}/{{ article.url }}">{{ article.title }}</a></dd> |
||||||
|
{% endfor %} |
||||||
|
</dl> |
||||||
|
</section> |
||||||
|
{% endblock %} |
@ -0,0 +1,2 @@ |
|||||||
|
{% extends "index.html" %} |
||||||
|
{% block title %}{{ SITENAME }} - {{ tag }}{% endblock %} |
@ -0,0 +1,2 @@ |
|||||||
|
{% if article.tags %}<p>tags: {% for tag in article.tags %}<a href="{{ SITEURL }}/{{ tag.url }}">{{ tag | escape }}</a> {% endfor %}</p>{% endif %} |
||||||
|
{% if PDF_PROCESSOR %}<p><a href="{{ SITEURL }}/pdf/{{ article.slug }}.pdf">get the pdf</a></p>{% endif %} |
@ -0,0 +1,16 @@ |
|||||||
|
{% extends "base.html" %} |
||||||
|
|
||||||
|
{% block title %}{{ SITENAME }} - Tags{% endblock %} |
||||||
|
|
||||||
|
{% block content %} |
||||||
|
|
||||||
|
<section id="content" class="body"> |
||||||
|
<h1>Tags for {{ SITENAME }}</h1> |
||||||
|
<ul> |
||||||
|
{% for tag, articles in tags|sort %} |
||||||
|
<li><a href="{{ SITEURL }}/{{ tag.url }}">{{ tag }}</a> ({{ articles|count }})</li> |
||||||
|
{% endfor %} |
||||||
|
</ul> |
||||||
|
</section> |
||||||
|
|
||||||
|
{% endblock %} |
@ -0,0 +1,8 @@ |
|||||||
|
{% macro translations_for(article) %} |
||||||
|
{% if article.translations %} |
||||||
|
Translations: |
||||||
|
{% for translation in article.translations %} |
||||||
|
<a href="{{ SITEURL }}/{{ translation.url }}">{{ translation.lang }}</a> |
||||||
|
{% endfor %} |
||||||
|
{% endif %} |
||||||
|
{% endmacro %} |
@ -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="//platform.twitter.com/widgets.js"></script> |
||||||
|
{% endif %} |