forked from varia/varia.website
r
7 years ago
commit
65de0a5f8c
31 changed files with 1414 additions and 0 deletions
@ -0,0 +1,124 @@ |
|||||
|
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=roelof.info |
||||
|
SSH_PORT=8282 |
||||
|
SSH_USER=r |
||||
|
SSH_TARGET_DIR=/opt/wisselwerking |
||||
|
|
||||
|
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 |
||||
|
|
||||
|
RELATIVE ?= 0 |
||||
|
ifeq ($(RELATIVE), 1) |
||||
|
PELICANOPTS += --relative-urls |
||||
|
endif |
||||
|
|
||||
|
help: |
||||
|
@echo 'Makefile for a pelican Web site ' |
||||
|
@echo ' ' |
||||
|
@echo 'Usage: ' |
||||
|
@echo ' make html (re)generate the web site ' |
||||
|
@echo ' make clean remove the generated files ' |
||||
|
@echo ' make regenerate regenerate files upon modification ' |
||||
|
@echo ' make publish generate using production settings ' |
||||
|
@echo ' make serve [PORT=8000] serve site at http://localhost:8000' |
||||
|
@echo ' make serve-global [SERVER=0.0.0.0] serve (as root) to $(SERVER):80 ' |
||||
|
@echo ' make devserver [PORT=8000] 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 'Set the RELATIVE variable to 1 to enable relative urls ' |
||||
|
@echo ' ' |
||||
|
|
||||
|
html: |
||||
|
$(PELICAN) $(INPUTDIR) -o $(OUTPUTDIR) -s $(CONFFILE) $(PELICANOPTS) |
||||
|
|
||||
|
clean: |
||||
|
[ ! -d $(OUTPUTDIR) ] || rm -rf $(OUTPUTDIR) |
||||
|
|
||||
|
regenerate: |
||||
|
$(PELICAN) -r $(INPUTDIR) -o $(OUTPUTDIR) -s $(CONFFILE) $(PELICANOPTS) |
||||
|
|
||||
|
serve: |
||||
|
ifdef PORT |
||||
|
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: |
||||
|
$(BASEDIR)/develop_server.sh stop |
||||
|
@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 --no-mime-magic --no-preserve |
||||
|
|
||||
|
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 stopserver publish ssh_upload rsync_upload dropbox_upload ftp_upload s3_upload cf_upload github |
@ -0,0 +1,5 @@ |
|||||
|
Title: first_post |
||||
|
Date: 2014-12-13 18:32 |
||||
|
Category: Test |
||||
|
|
||||
|
Hello world from Pelican! |
@ -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 |
||||
|
mkdir -p $OUTPUTDIR && 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,92 @@ |
|||||
|
from fabric.api import * |
||||
|
import fabric.contrib.project as project |
||||
|
import os |
||||
|
import shutil |
||||
|
import sys |
||||
|
import SocketServer |
||||
|
|
||||
|
from pelican.server import ComplexHTTPRequestHandler |
||||
|
|
||||
|
# Local path configuration (can be absolute or relative to fabfile) |
||||
|
env.deploy_path = 'output' |
||||
|
DEPLOY_PATH = env.deploy_path |
||||
|
|
||||
|
# Remote server configuration |
||||
|
production = 'r@roelof.info:8282' |
||||
|
dest_path = '/opt/wisselwerking' |
||||
|
|
||||
|
# 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(): |
||||
|
"""`build` with the delete switch""" |
||||
|
local('pelican -d -s pelicanconf.py') |
||||
|
|
||||
|
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), ComplexHTTPRequestHandler) |
||||
|
|
||||
|
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} -p".format(**env)) |
@ -0,0 +1,54 @@ |
|||||
|
#!/usr/bin/env python |
||||
|
# -*- coding: utf-8 -*- # |
||||
|
from __future__ import unicode_literals |
||||
|
|
||||
|
AUTHOR = u'team' |
||||
|
SITENAME = u'Centrum Alledaagse Tecnologie' |
||||
|
SITEURL = '' |
||||
|
|
||||
|
PATH = 'content' |
||||
|
|
||||
|
TIMEZONE = 'Europe/Amsterdam' |
||||
|
|
||||
|
DEFAULT_LANG = u'nl' |
||||
|
|
||||
|
# 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', 'http://getpelican.com/'), |
||||
|
# ('Python.org', 'http://python.org/'), |
||||
|
# ('Jinja2', 'http://jinja.pocoo.org/'), |
||||
|
# ('You can modify those links in your config file', '#'),) |
||||
|
|
||||
|
# Social widget |
||||
|
#SOCIAL = (('You can add links in your config file', '#'), |
||||
|
('Another social link', '#'),) |
||||
|
|
||||
|
DEFAULT_PAGINATION = 5 |
||||
|
|
||||
|
# Uncomment following line if you want document-relative URLs when developing |
||||
|
#RELATIVE_URLS = True |
||||
|
|
||||
|
PLUGIN_PATHS = ['./plugins'] |
||||
|
PLUGINS = ['extract_toc'] |
||||
|
MD_EXTENSIONS = ['codehilite','extra','smarty', 'toc'] |
||||
|
|
||||
|
STATIC_PATHS = ['extra', 'images', 'pdfs'] |
||||
|
EXTRA_PATH_METADATA = { |
||||
|
'extra/robots.txt': {'path': 'robots.txt'}, |
||||
|
'extra/favicon.ico': {'path': 'favicon.ico'}, |
||||
|
'extra/htaccess': {'path': '.htaccess'} |
||||
|
} |
||||
|
|
||||
|
MENUITEMS=( |
||||
|
# adds extra menu items, the others are automatically generated as pages |
||||
|
('home', '/'), |
||||
|
) |
||||
|
|
||||
|
THEME = 'themes/wisselwerking' |
||||
|
|
@ -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,228 @@ |
|||||
|
/* |
||||
|
2k17 Homebrewserver.club Pelican theme |
||||
|
--- |
||||
|
Style sheet is ordered vertically, with declarations for the header on top and footer on the bottom. |
||||
|
|
||||
|
With contributions by club members: |
||||
|
http://roelof.info |
||||
|
http://randomiser.info/ |
||||
|
http://majesticmoo.se |
||||
|
*/ |
||||
|
|
||||
|
@font-face { |
||||
|
font-family: 'NowBlack'; |
||||
|
src: url('../fonts/Now-Black.otf') format('opentype'); |
||||
|
font-weight: normal; |
||||
|
font-style: normal; |
||||
|
} |
||||
|
|
||||
|
@font-face { |
||||
|
font-family: 'NowBold'; |
||||
|
src: url('../fonts/Now-Bold.otf') format('opentype'); |
||||
|
font-weight: bold; |
||||
|
font-style: normal; |
||||
|
} |
||||
|
|
||||
|
@font-face { |
||||
|
font-family: 'NowLight'; |
||||
|
src: url('../fonts/Now-Light.otf') format('opentype'); |
||||
|
font-weight: normal; |
||||
|
font-style: normal; |
||||
|
} |
||||
|
|
||||
|
@font-face { |
||||
|
font-family: 'NowMedium'; |
||||
|
src: url('../fonts/Now-Medium.otf') format('opentype'); |
||||
|
font-weight: normal; |
||||
|
font-style: normal; |
||||
|
} |
||||
|
|
||||
|
@font-face { |
||||
|
font-family: 'NowRegular'; |
||||
|
src: url('../fonts/Now-Regular.otf') format('opentype'); |
||||
|
font-weight: normal; |
||||
|
font-style: normal; |
||||
|
} |
||||
|
|
||||
|
@font-face { |
||||
|
font-family: 'NowThin'; |
||||
|
src: url('../fonts/Now-Thin.otf') format('opentype'); |
||||
|
font-weight: normal; |
||||
|
font-style: normal; |
||||
|
} |
||||
|
|
||||
|
header { |
||||
|
width:100%; |
||||
|
} |
||||
|
|
||||
|
#banner { |
||||
|
margin-top:1em; |
||||
|
font-size: 60px; |
||||
|
transform: rotate(5deg); |
||||
|
} |
||||
|
|
||||
|
hr { |
||||
|
background-color: #06061e; |
||||
|
color: #06061e; |
||||
|
height: 5px; |
||||
|
} |
||||
|
pre { |
||||
|
} |
||||
|
#menu{ |
||||
|
font-size:40px; |
||||
|
font-weight:bold; |
||||
|
margin-top: 1em; |
||||
|
text-align:center; |
||||
|
} |
||||
|
|
||||
|
body { |
||||
|
line-height:1.5em; |
||||
|
background-color: #06061e; |
||||
|
font-size: 16px; |
||||
|
margin: 0 auto; |
||||
|
width: 900px; |
||||
|
color:white; |
||||
|
font-family:"NowRegular"; |
||||
|
font-style: normal; |
||||
|
} |
||||
|
|
||||
|
a { |
||||
|
color:LimeGreen; |
||||
|
font-weight: bold; |
||||
|
} |
||||
|
|
||||
|
.paginator{ |
||||
|
float:right; |
||||
|
margin:0px; |
||||
|
} |
||||
|
|
||||
|
#index{ |
||||
|
} |
||||
|
|
||||
|
#post-list { |
||||
|
padding-left:0px; |
||||
|
margin-top:0px; |
||||
|
} |
||||
|
|
||||
|
ul { |
||||
|
padding-left:0px; |
||||
|
} |
||||
|
|
||||
|
.hentry{ |
||||
|
/*margin-top:2em;*/ |
||||
|
border-width: 1px; |
||||
|
border-color: #444; |
||||
|
} |
||||
|
|
||||
|
.article-info{ |
||||
|
clear: right; |
||||
|
display: inline; |
||||
|
float: left; |
||||
|
margin-bottom: 5em; |
||||
|
max-width: 150px; |
||||
|
padding-right: em; |
||||
|
transform: rotate(-3deg); |
||||
|
} |
||||
|
|
||||
|
|
||||
|
|
||||
|
.entry-title span{ |
||||
|
width:100%; |
||||
|
display:inline-block; |
||||
|
} |
||||
|
|
||||
|
.entry-content{ |
||||
|
display: inline; |
||||
|
float: right; |
||||
|
margin-bottom: 2.5em; |
||||
|
max-width: 700px; |
||||
|
padding-right: 1em; |
||||
|
} |
||||
|
|
||||
|
.entry-content pre{ |
||||
|
font-size:20px; |
||||
|
padding-left:1em; |
||||
|
overflow: auto; |
||||
|
background-color: #F8F8F8; |
||||
|
line-height:1.2em; |
||||
|
} |
||||
|
|
||||
|
.entry-content img{ |
||||
|
max-width:100%; |
||||
|
border: 2px solid white; |
||||
|
} |
||||
|
|
||||
|
p:nth-child(odd){ |
||||
|
-ms-transform: rotate(1deg); |
||||
|
-webkit-transform: rotate(1deg); |
||||
|
transform: rotate(1deg); |
||||
|
} |
||||
|
|
||||
|
p:nth-child(even){ |
||||
|
-ms-transform: rotate(-1deg); |
||||
|
-webkit-transform: rotate(-1deg); |
||||
|
transform: rotate(-1deg); |
||||
|
} |
||||
|
|
||||
|
|
||||
|
.entry-content ul { |
||||
|
font-size:20px; |
||||
|
line-height:1.5; |
||||
|
margin: auto; |
||||
|
max-width:800px; |
||||
|
} |
||||
|
|
||||
|
.highlight{ |
||||
|
margin: auto; |
||||
|
max-width:800px; |
||||
|
} |
||||
|
|
||||
|
#page-content img{ |
||||
|
max-width:100%; |
||||
|
} |
||||
|
|
||||
|
blockquote { |
||||
|
font-style:italic; |
||||
|
} |
||||
|
|
||||
|
#content{ |
||||
|
margin:auto; |
||||
|
} |
||||
|
|
||||
|
.divider { |
||||
|
font-size:12px; |
||||
|
width:100%; |
||||
|
line-height:1em; |
||||
|
background-color:white; |
||||
|
} |
||||
|
|
||||
|
.published{ |
||||
|
font-size:smaller; |
||||
|
} |
||||
|
|
||||
|
.article_tags{ |
||||
|
font-size:smaller; |
||||
|
} |
||||
|
|
||||
|
|
||||
|
#categories { |
||||
|
font-size: 40px; |
||||
|
margin-top: 2em; |
||||
|
text-align: center; |
||||
|
} |
||||
|
#pertaining{ |
||||
|
margin-top:2em; |
||||
|
text-align:center; |
||||
|
|
||||
|
} |
||||
|
.simple-footnotes{ |
||||
|
font-size:14px; |
||||
|
margin:auto; |
||||
|
max-width:800px; |
||||
|
} |
||||
|
|
||||
|
.author{ |
||||
|
font-size:smaller; |
||||
|
} |
||||
|
|
||||
|
|
@ -0,0 +1,437 @@ |
|||||
|
|
||||
|
pre .hll { |
||||
|
background-color: #ffffcc; |
||||
|
} |
||||
|
pre .c { |
||||
|
color: #60a0b0; |
||||
|
font-style: italic; |
||||
|
} |
||||
|
pre .err { |
||||
|
border: 1px solid #ff0000; |
||||
|
} |
||||
|
pre .k { |
||||
|
color: #007020; |
||||
|
font-weight: bold; |
||||
|
} |
||||
|
pre .o { |
||||
|
color: #666666; |
||||
|
} |
||||
|
pre .ch { |
||||
|
color: #60a0b0; |
||||
|
font-style: italic; |
||||
|
} |
||||
|
pre .cm { |
||||
|
color: #60a0b0; |
||||
|
font-style: italic; |
||||
|
} |
||||
|
pre .cp { |
||||
|
color: #007020; |
||||
|
} |
||||
|
pre .cpf { |
||||
|
color: #60a0b0; |
||||
|
font-style: italic; |
||||
|
} |
||||
|
pre .c1 { |
||||
|
color: #60a0b0; |
||||
|
font-style: italic; |
||||
|
} |
||||
|
pre .cs { |
||||
|
background-color: #fff0f0; |
||||
|
color: #60a0b0; |
||||
|
} |
||||
|
pre .gd { |
||||
|
color: #a00000; |
||||
|
} |
||||
|
pre .ge { |
||||
|
font-style: italic; |
||||
|
} |
||||
|
pre .gr { |
||||
|
color: #ff0000; |
||||
|
} |
||||
|
pre .gh { |
||||
|
color: #000080; |
||||
|
font-weight: bold; |
||||
|
} |
||||
|
pre .gi { |
||||
|
color: #00a000; |
||||
|
} |
||||
|
pre .go { |
||||
|
color: #888888; |
||||
|
} |
||||
|
pre .gp { |
||||
|
color: #c65d09; |
||||
|
font-weight: bold; |
||||
|
} |
||||
|
pre .gs { |
||||
|
font-weight: bold; |
||||
|
} |
||||
|
pre .gu { |
||||
|
color: #800080; |
||||
|
font-weight: bold; |
||||
|
} |
||||
|
pre .gt { |
||||
|
color: #0044dd; |
||||
|
} |
||||
|
pre .kc { |
||||
|
color: #007020; |
||||
|
font-weight: bold; |
||||
|
} |
||||
|
pre .kd { |
||||
|
color: #007020; |
||||
|
font-weight: bold; |
||||
|
} |
||||
|
pre .kn { |
||||
|
color: #007020; |
||||
|
font-weight: bold; |
||||
|
} |
||||
|
pre .kp { |
||||
|
color: #007020; |
||||
|
} |
||||
|
pre .kr { |
||||
|
color: #007020; |
||||
|
font-weight: bold; |
||||
|
} |
||||
|
pre .kt { |
||||
|
color: #902000; |
||||
|
} |
||||
|
pre .m { |
||||
|
color: #40a070; |
||||
|
} |
||||
|
pre .s { |
||||
|
color: #4070a0; |
||||
|
} |
||||
|
pre .na { |
||||
|
color: #4070a0; |
||||
|
} |
||||
|
pre .nb { |
||||
|
color: #007020; |
||||
|
} |
||||
|
pre .nc { |
||||
|
color: #0e84b5; |
||||
|
font-weight: bold; |
||||
|
} |
||||
|
pre .no { |
||||
|
color: #60add5; |
||||
|
} |
||||
|
pre .nd { |
||||
|
color: #555555; |
||||
|
font-weight: bold; |
||||
|
} |
||||
|
pre .ni { |
||||
|
color: #d55537; |
||||
|
font-weight: bold; |
||||
|
} |
||||
|
pre .ne { |
||||
|
color: #007020; |
||||
|
} |
||||
|
pre .nf { |
||||
|
color: #06287e; |
||||
|
} |
||||
|
pre .nl { |
||||
|
color: #002070; |
||||
|
font-weight: bold; |
||||
|
} |
||||
|
pre .nn { |
||||
|
color: #0e84b5; |
||||
|
font-weight: bold; |
||||
|
} |
||||
|
pre .nt { |
||||
|
color: #062873; |
||||
|
font-weight: bold; |
||||
|
} |
||||
|
pre .nv { |
||||
|
color: #bb60d5; |
||||
|
} |
||||
|
pre .ow { |
||||
|
color: #007020; |
||||
|
font-weight: bold; |
||||
|
} |
||||
|
pre .w { |
||||
|
color: #bbbbbb; |
||||
|
} |
||||
|
pre .mb { |
||||
|
color: #40a070; |
||||
|
} |
||||
|
pre .mf { |
||||
|
color: #40a070; |
||||
|
} |
||||
|
pre .mh { |
||||
|
color: #40a070; |
||||
|
} |
||||
|
pre .mi { |
||||
|
color: #40a070; |
||||
|
} |
||||
|
pre .mo { |
||||
|
color: #40a070; |
||||
|
} |
||||
|
pre .sb { |
||||
|
color: #4070a0; |
||||
|
} |
||||
|
pre .sc { |
||||
|
color: #4070a0; |
||||
|
} |
||||
|
pre .sd { |
||||
|
color: #4070a0; |
||||
|
font-style: italic; |
||||
|
} |
||||
|
pre .s2 { |
||||
|
color: #4070a0; |
||||
|
} |
||||
|
pre .se { |
||||
|
color: #4070a0; |
||||
|
font-weight: bold; |
||||
|
} |
||||
|
pre .sh { |
||||
|
color: #4070a0; |
||||
|
} |
||||
|
pre .si { |
||||
|
color: #70a0d0; |
||||
|
font-style: italic; |
||||
|
} |
||||
|
pre .sx { |
||||
|
color: #c65d09; |
||||
|
} |
||||
|
pre .sr { |
||||
|
color: #235388; |
||||
|
} |
||||
|
pre .s1 { |
||||
|
color: #4070a0; |
||||
|
} |
||||
|
pre .ss { |
||||
|
color: #517918; |
||||
|
} |
||||
|
pre .bp { |
||||
|
color: #007020; |
||||
|
} |
||||
|
pre .vc { |
||||
|
color: #bb60d5; |
||||
|
} |
||||
|
pre .vg { |
||||
|
color: #bb60d5; |
||||
|
} |
||||
|
pre .vi { |
||||
|
color: #bb60d5; |
||||
|
} |
||||
|
pre .il { |
||||
|
color: #40a070; |
||||
|
} |
||||
|
.syntax pre .hll { |
||||
|
background-color: #ffffcc; |
||||
|
} |
||||
|
.syntax pre { |
||||
|
background: #f0f0f0 none repeat scroll 0 0; |
||||
|
} |
||||
|
.syntax pre .c { |
||||
|
color: #60a0b0; |
||||
|
font-style: italic; |
||||
|
} |
||||
|
.syntax pre .err { |
||||
|
border: 1px solid #ff0000; |
||||
|
} |
||||
|
.syntax pre .k { |
||||
|
color: #007020; |
||||
|
font-weight: bold; |
||||
|
} |
||||
|
.syntax pre .o { |
||||
|
color: #666666; |
||||
|
} |
||||
|
.syntax pre .ch { |
||||
|
color: #60a0b0; |
||||
|
font-style: italic; |
||||
|
} |
||||
|
.syntax pre .cm { |
||||
|
color: #60a0b0; |
||||
|
font-style: italic; |
||||
|
} |
||||
|
.syntax pre .cp { |
||||
|
color: #007020; |
||||
|
} |
||||
|
.syntax pre .cpf { |
||||
|
color: #60a0b0; |
||||
|
font-style: italic; |
||||
|
} |
||||
|
.syntax pre .c1 { |
||||
|
color: #60a0b0; |
||||
|
font-style: italic; |
||||
|
} |
||||
|
.syntax pre .cs { |
||||
|
background-color: #fff0f0; |
||||
|
color: #60a0b0; |
||||
|
} |
||||
|
.syntax pre .gd { |
||||
|
color: #a00000; |
||||
|
} |
||||
|
.syntax pre .ge { |
||||
|
font-style: italic; |
||||
|
} |
||||
|
.syntax pre .gr { |
||||
|
color: #ff0000; |
||||
|
} |
||||
|
.syntax pre .gh { |
||||
|
color: #000080; |
||||
|
font-weight: bold; |
||||
|
} |
||||
|
.syntax pre .gi { |
||||
|
color: #00a000; |
||||
|
} |
||||
|
.syntax pre .go { |
||||
|
color: #888888; |
||||
|
} |
||||
|
.syntax pre .gp { |
||||
|
color: #c65d09; |
||||
|
font-weight: bold; |
||||
|
} |
||||
|
.syntax pre .gs { |
||||
|
font-weight: bold; |
||||
|
} |
||||
|
.syntax pre .gu { |
||||
|
color: #800080; |
||||
|
font-weight: bold; |
||||
|
} |
||||
|
.syntax pre .gt { |
||||
|
color: #0044dd; |
||||
|
} |
||||
|
.syntax pre .kc { |
||||
|
color: #007020; |
||||
|
font-weight: bold; |
||||
|
} |
||||
|
.syntax pre .kd { |
||||
|
color: #007020; |
||||
|
font-weight: bold; |
||||
|
} |
||||
|
.syntax pre .kn { |
||||
|
color: #007020; |
||||
|
font-weight: bold; |
||||
|
} |
||||
|
.syntax pre .kp { |
||||
|
color: #007020; |
||||
|
} |
||||
|
.syntax pre .kr { |
||||
|
color: #007020; |
||||
|
font-weight: bold; |
||||
|
} |
||||
|
.syntax pre .kt { |
||||
|
color: #902000; |
||||
|
} |
||||
|
.syntax pre .m { |
||||
|
color: #40a070; |
||||
|
} |
||||
|
.syntax pre .s { |
||||
|
color: #4070a0; |
||||
|
} |
||||
|
.syntax pre .na { |
||||
|
color: #4070a0; |
||||
|
} |
||||
|
.syntax pre .nb { |
||||
|
color: #007020; |
||||
|
} |
||||
|
.syntax pre .nc { |
||||
|
color: #0e84b5; |
||||
|
font-weight: bold; |
||||
|
} |
||||
|
.syntax pre .no { |
||||
|
color: #60add5; |
||||
|
} |
||||
|
.syntax pre .nd { |
||||
|
color: #555555; |
||||
|
font-weight: bold; |
||||
|
} |
||||
|
.syntax pre .ni { |
||||
|
color: #d55537; |
||||
|
font-weight: bold; |
||||
|
} |
||||
|
.syntax pre .ne { |
||||
|
color: #007020; |
||||
|
} |
||||
|
.syntax pre .nf { |
||||
|
color: #06287e; |
||||
|
} |
||||
|
.syntax pre .nl { |
||||
|
color: #002070; |
||||
|
font-weight: bold; |
||||
|
} |
||||
|
.syntax pre .nn { |
||||
|
color: #0e84b5; |
||||
|
font-weight: bold; |
||||
|
} |
||||
|
.syntax pre .nt { |
||||
|
color: #062873; |
||||
|
font-weight: bold; |
||||
|
} |
||||
|
.syntax pre .nv { |
||||
|
color: #bb60d5; |
||||
|
} |
||||
|
.syntax pre .ow { |
||||
|
color: #007020; |
||||
|
font-weight: bold; |
||||
|
} |
||||
|
.syntax pre .w { |
||||
|
color: #bbbbbb; |
||||
|
} |
||||
|
.syntax pre .mb { |
||||
|
color: #40a070; |
||||
|
} |
||||
|
.syntax pre .mf { |
||||
|
color: #40a070; |
||||
|
} |
||||
|
.syntax pre .mh { |
||||
|
color: #40a070; |
||||
|
} |
||||
|
.syntax pre .mi { |
||||
|
color: #40a070; |
||||
|
} |
||||
|
.syntax pre .mo { |
||||
|
color: #40a070; |
||||
|
} |
||||
|
.syntax pre .sb { |
||||
|
color: #4070a0; |
||||
|
} |
||||
|
.syntax pre .sc { |
||||
|
color: #4070a0; |
||||
|
} |
||||
|
.syntax pre .sd { |
||||
|
color: #4070a0; |
||||
|
font-style: italic; |
||||
|
} |
||||
|
.syntax pre .s2 { |
||||
|
color: #4070a0; |
||||
|
} |
||||
|
.syntax pre .se { |
||||
|
color: #4070a0; |
||||
|
font-weight: bold; |
||||
|
} |
||||
|
.syntax pre .sh { |
||||
|
color: #4070a0; |
||||
|
} |
||||
|
.syntax pre .si { |
||||
|
color: #70a0d0; |
||||
|
font-style: italic; |
||||
|
} |
||||
|
.syntax pre .sx { |
||||
|
color: #c65d09; |
||||
|
} |
||||
|
.syntax pre .sr { |
||||
|
color: #235388; |
||||
|
} |
||||
|
.syntax pre .s1 { |
||||
|
color: #4070a0; |
||||
|
} |
||||
|
.syntax pre .ss { |
||||
|
color: #517918; |
||||
|
} |
||||
|
.syntax pre .bp { |
||||
|
color: #007020; |
||||
|
} |
||||
|
.syntax pre .vc { |
||||
|
color: #bb60d5; |
||||
|
} |
||||
|
.syntax pre .vg { |
||||
|
color: #bb60d5; |
||||
|
} |
||||
|
.syntax pre .vi { |
||||
|
color: #bb60d5; |
||||
|
} |
||||
|
.syntax pre .il { |
||||
|
color: #40a070; |
||||
|
} |
||||
|
|
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
@ -0,0 +1,27 @@ |
|||||
|
// stars.js
|
||||
|
// Random Stars
|
||||
|
var generateStars = function(){ |
||||
|
|
||||
|
var $galaxy = $(".galaxy"); |
||||
|
var iterator = 0; |
||||
|
|
||||
|
while (iterator <= 100){ |
||||
|
var xposition = Math.random(); |
||||
|
var yposition = Math.random(); |
||||
|
var star_type = Math.floor((Math.random() * 3) + 1); |
||||
|
var position = { |
||||
|
"x" : $galaxy.width() * xposition, |
||||
|
"y" : $galaxy.height() * yposition, |
||||
|
}; |
||||
|
|
||||
|
$('<div class="star star-type' + star_type + '"></div>').appendTo($galaxy).css({ |
||||
|
"top" : position.y, |
||||
|
"left" : position.x |
||||
|
}); |
||||
|
|
||||
|
iterator++; |
||||
|
} |
||||
|
|
||||
|
}; |
||||
|
|
||||
|
generateStars(); |
@ -0,0 +1,11 @@ |
|||||
|
{% extends "base.html" %} |
||||
|
{% block content %} |
||||
|
<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> |
||||
|
{% endblock %} |
@ -0,0 +1,50 @@ |
|||||
|
{% extends "base.html" %} |
||||
|
{% block head %} |
||||
|
{{ super() }} |
||||
|
{% if article.description %} |
||||
|
<meta name="description" content="{{article.description}}" /> |
||||
|
{% endif %} |
||||
|
|
||||
|
{% if article.tags or article.category or article.keywords %} |
||||
|
<meta name="keywords" content="{{ [article.tags|join(', '), article.category, article.keywords]|join(', ') }}" /> |
||||
|
{% endif %} |
||||
|
|
||||
|
|
||||
|
{% endblock %} |
||||
|
<div class="file type_folder"> |
||||
|
<a title="../" href="/log/" id="link0" class="type_folder"><img alt="../" src="/icons/back.png" class="type_folder"></a> |
||||
|
</br> |
||||
|
<span class="filename">../</span> |
||||
|
|
||||
|
|
||||
|
{% block content %} |
||||
|
<section id="content" class="body"> |
||||
|
<div class="article-info"> |
||||
|
<div class="entry-title"> |
||||
|
<a href="{{ SITEURL }}/{{ article.url }}" rel="bookmark" |
||||
|
title="Permalink to {{ article.title|striptags }}">{{ article.title }}</a></div> |
||||
|
{% import 'translations.html' as translations with context %} |
||||
|
{{ translations.translations_for(article) }} |
||||
|
<div class="post-info"> |
||||
|
<time class="published" datetime="{{ article.date.isoformat() }}"> |
||||
|
{{ article.locale_date }} |
||||
|
</time> |
||||
|
{% if article.modified %} |
||||
|
<time class="modified" datetime="{{ article.modified.isoformat() }}"> |
||||
|
{{ article.locale_modified }} |
||||
|
</time> |
||||
|
{% 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 %} |
||||
|
</div> |
||||
|
</div> |
||||
|
<div class="entry-content"> |
||||
|
{{ article.content }} |
||||
|
</div><!-- /.entry-content --> |
||||
|
</section> |
||||
|
{% endblock %} |
@ -0,0 +1,7 @@ |
|||||
|
{% extends "index.html" %} |
||||
|
|
||||
|
{% block title %}{{ SITENAME }} - Articles by {{ author }}{% endblock %} |
||||
|
{% block content_title %} |
||||
|
<h2>Articles by {{ author }}</h2> |
||||
|
{% endblock %} |
||||
|
|
@ -0,0 +1,13 @@ |
|||||
|
{% extends "base.html" %} |
||||
|
|
||||
|
{% block title %}{{ SITENAME }} - Authors{% endblock %} |
||||
|
|
||||
|
{% block content %} |
||||
|
<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> |
||||
|
{% endblock %} |
@ -0,0 +1,69 @@ |
|||||
|
<!DOCTYPE html> |
||||
|
<html lang="{{ DEFAULT_LANG }}"> |
||||
|
<head> |
||||
|
{% block head %} |
||||
|
<title>{% block title %}{{ SITENAME }}{% endblock title %}</title> |
||||
|
<meta charset="utf-8" /> |
||||
|
<link rel="icon" href="{{ SITEURL}}/favicon.ico" type="image/x-icon"> |
||||
|
<link rel="shortcut icon" href="{{ SITEURL }}/favicon.ico" type="image/x-icon"> |
||||
|
|
||||
|
{% if FEED_ALL_ATOM %} |
||||
|
<link href="{{ FEED_DOMAIN }}/{{ FEED_ALL_ATOM }}" type="application/atom+xml" rel="alternate" title="{{ SITENAME }} Full Atom Feed" /> |
||||
|
{% endif %} |
||||
|
{% if FEED_ALL_RSS %} |
||||
|
<link href="{{ FEED_DOMAIN }}/{{ FEED_ALL_RSS }}" type="application/rss+xml" rel="alternate" title="{{ SITENAME }} Full RSS Feed" /> |
||||
|
{% endif %} |
||||
|
{% if FEED_ATOM %} |
||||
|
<link href="{{ FEED_DOMAIN }}/{{ FEED_ATOM }}" type="application/atom+xml" rel="alternate" title="{{ SITENAME }} Atom Feed" /> |
||||
|
{% endif %} |
||||
|
{% if FEED_RSS %} |
||||
|
<link href="{{ FEED_DOMAIN }}/{{ FEED_RSS }}" type="application/rss+xml" rel="alternate" title="{{ SITENAME }} RSS Feed" /> |
||||
|
{% endif %} |
||||
|
{% if CATEGORY_FEED_ATOM and category %} |
||||
|
<link href="{{ FEED_DOMAIN }}/{{ CATEGORY_FEED_ATOM|format(category.slug) }}" type="application/atom+xml" rel="alternate" title="{{ SITENAME }} Categories Atom Feed" /> |
||||
|
{% endif %} |
||||
|
{% if CATEGORY_FEED_RSS and category %} |
||||
|
<link href="{{ FEED_DOMAIN }}/{{ CATEGORY_FEED_RSS|format(category.slug) }}" type="application/rss+xml" rel="alternate" title="{{ SITENAME }} Categories RSS Feed" /> |
||||
|
{% endif %} |
||||
|
{% if TAG_FEED_ATOM and tag %} |
||||
|
<link href="{{ FEED_DOMAIN }}/{{ TAG_FEED_ATOM|format(tag.slug) }}" type="application/atom+xml" rel="alternate" title="{{ SITENAME }} Tags Atom Feed" /> |
||||
|
{% endif %} |
||||
|
{% if TAG_FEED_RSS and tag %} |
||||
|
<link href="{{ FEED_DOMAIN }}/{{ TAG_FEED_RSS|format(tag.slug) }}" type="application/rss+xml" rel="alternate" title="{{ SITENAME }} Tags RSS Feed" /> |
||||
|
{% endif %} |
||||
|
|
||||
|
{% from 'syndication.html' import syndication with context %} |
||||
|
{{ syndication(article) }} |
||||
|
|
||||
|
<link rel="stylesheet" type="text/css" href="{{ SITEURL }}/{{ THEME_STATIC_DIR }}/css/pygment.css" /> |
||||
|
<link rel="stylesheet" type="text/css" href="{{ SITEURL }}/{{ THEME_STATIC_DIR }}/css/{{ CSS_FILE }}" /> |
||||
|
{% endblock head %} |
||||
|
</head> |
||||
|
|
||||
|
<body id="index" class="home"> |
||||
|
<div class="galaxy"></div> |
||||
|
<header id="banner"> |
||||
|
SPACEKEET |
||||
|
<span id="subtitle">{{ SITESUBTITLE }}</span> |
||||
|
</header><!-- /#banner --> |
||||
|
<nav id="menu"> |
||||
|
{% for title, link in MENUITEMS %} |
||||
|
<a class="menu-item" href="{{ link }}">{{ title }}</a> |
||||
|
{% endfor %} |
||||
|
{% if DISPLAY_PAGES_ON_MENU %} |
||||
|
{% for p in pages %} |
||||
|
<span {% if p == page %} class="active"{% endif %}><a href="{{ SITEURL }}/{{ p.url }}">{{ p.title }}</a></span> |
||||
|
{% endfor %} |
||||
|
{% else %} |
||||
|
{% if DISPLAY_CATEGORIES_ON_MENU %} |
||||
|
{% for cat, null in categories %} |
||||
|
<li{% if cat == category %} class="active"{% endif %}><a href="{{ SITEURL }}/{{ cat.url }}">{{ cat }}</a></li> |
||||
|
{% endfor %} |
||||
|
{% endif %} |
||||
|
{% endif %} |
||||
|
</ul><hr></nav><!-- /#menu --> |
||||
|
{% block content %} |
||||
|
{% endblock %} |
||||
|
|
||||
|
</body> |
||||
|
</html> |
@ -0,0 +1,8 @@ |
|||||
|
{% extends "base.html" %} |
||||
|
{% block content %} |
||||
|
<div id="categories"> |
||||
|
{% for category, articles in categories %} |
||||
|
<a href="{{ SITEURL }}/{{ category.url }}">{{ category }}</a> |
||||
|
{% endfor %} |
||||
|
</div> |
||||
|
{% endblock %} |
@ -0,0 +1,5 @@ |
|||||
|
{% extends "index.html" %} |
||||
|
{% block content_title %} |
||||
|
<div id="pertaining">Everything pertaining to {{ category }}</div> |
||||
|
{% endblock %} |
||||
|
|
@ -0,0 +1,14 @@ |
|||||
|
{% if GOSQUARED_SITENAME %} |
||||
|
<script type="text/javascript"> |
||||
|
var GoSquared={}; |
||||
|
GoSquared.acct = "{{ GOSQUARED_SITENAME }}"; |
||||
|
(function(w){ |
||||
|
function gs(){ |
||||
|
w._gstc_lt=+(new Date); var d=document; |
||||
|
var g = d.createElement("script"); g.type = "text/javascript"; g.async = true; g.src = "https://d1l6p2sc9645hc.cloudfront.net/tracker.js"; |
||||
|
var s = d.getElementsByTagName("script")[0]; s.parentNode.insertBefore(g, s); |
||||
|
} |
||||
|
w.addEventListener?w.addEventListener("load",gs,false):w.attachEvent("onload",gs); |
||||
|
})(window); |
||||
|
</script> |
||||
|
{% endif %} |
@ -0,0 +1,29 @@ |
|||||
|
{% extends "base.html" %} |
||||
|
{% block content %} |
||||
|
<section id="content"> |
||||
|
{% block content_title %} |
||||
|
{% endblock %} |
||||
|
{% if articles_page.has_other_pages() %} |
||||
|
{% include 'pagination.html' %} |
||||
|
{% endif %} |
||||
|
<div id="post-list"> |
||||
|
{% for article in articles_page.object_list %} |
||||
|
<article class="hentry"> |
||||
|
<div class="article-info"> <span class="entry-title"><a href="{{ SITEURL }}/{{ article.url }}" rel="bookmark" title="Permalink to {{ article.title|striptags }}">{{ article.title }}</a></span> |
||||
|
<div class="post-info"> |
||||
|
<time class="published" datetime="{{ article.date.isoformat() }}"> <sup>{{ article.locale_date }}</sup> </time> |
||||
|
<div class ='article_tags'> |
||||
|
{%- for tag in article.tags %} |
||||
|
{{ tag }} |
||||
|
{% endfor %} |
||||
|
</div> |
||||
|
</div></div><!-- /.post-info --> |
||||
|
<div class="entry-content"> {{ article.content }} |
||||
|
<div class="separator"><hr></div> |
||||
|
</div><!-- /.entry-content --> |
||||
|
</article> |
||||
|
{% endfor %} |
||||
|
</div><!-- /#posts-list --> |
||||
|
|
||||
|
</section><!-- /#content --> |
||||
|
{% endblock content %} |
@ -0,0 +1,16 @@ |
|||||
|
{% extends "base.html" %} |
||||
|
{% block title %}{{ page.title }}{%endblock%} |
||||
|
{% block content %} |
||||
|
{% import 'translations.html' as translations with context %} |
||||
|
{{ translations.translations_for(page) }} |
||||
|
|
||||
|
<div id ="page-content"> |
||||
|
{{ page.content }} |
||||
|
|
||||
|
{% if page.modified %} |
||||
|
<p> |
||||
|
Last updated: {{ page.locale_modified }} |
||||
|
</p> |
||||
|
{% endif %} |
||||
|
</div> |
||||
|
{% endblock %} |
@ -0,0 +1,11 @@ |
|||||
|
{% if DEFAULT_PAGINATION %} |
||||
|
<p class="paginator"> |
||||
|
{% if articles_page.has_previous() %} |
||||
|
<a href="{{ SITEURL }}/{{ articles_previous_page.url }}">«</a> |
||||
|
{% endif %} |
||||
|
Page {{ articles_page.number }} / {{ articles_paginator.num_pages }} |
||||
|
{% if articles_page.has_next() %} |
||||
|
<a href="{{ SITEURL }}/{{ articles_next_page.url }}">»</a> |
||||
|
{% endif %} |
||||
|
</p> |
||||
|
{% endif %} |
@ -0,0 +1,11 @@ |
|||||
|
{% extends "base.html" %} |
||||
|
{% block content %} |
||||
|
<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> |
||||
|
{% endblock %} |
@ -0,0 +1,57 @@ |
|||||
|
{#This template is for syndicating across the fucked up part of the web. It implements Open Graph and Twitter Card metadata to display links to HBSC well on social media |
||||
|
# This code is mostly taken from Talha Mansoor's Elegant pelican theme https://github.com/talha131/pelican-elegant |
||||
|
#} |
||||
|
|
||||
|
{# Thumbnail image to show when homepage is shared on social media. It also |
||||
|
serves as the default image for posts whose featured_image is not set. #} |
||||
|
{% if not FEATURED_IMAGE %} |
||||
|
{% set FEATURED_IMAGE = 'https://keet.space/images/keet.jpg' %} |
||||
|
{% else %} |
||||
|
{% set FEATURED_IMAGE = FEATURED_IMAGE %} |
||||
|
{% endif %} |
||||
|
|
||||
|
|
||||
|
{% macro syndication(article) %} |
||||
|
{% if article %} |
||||
|
<meta property="og:title" content="{{ article.title|striptags|e }} {%if article.subtitle %} - {{ article.subtitle|striptags|e }} {% endif %}"/> |
||||
|
<meta property="og:url" content="{{ SITEURL }}/{{ article.url }}" /> |
||||
|
<meta property="og:description" content="{{article.description|striptags|e}}" /> |
||||
|
<meta property="og:site_name" content="{{ SITENAME|striptags|e }}" /> |
||||
|
<meta property="og:article:author" content="{{ article.author }}" /> |
||||
|
{% if article.date %} |
||||
|
<meta property="og:article:published_time" content="{{ article.date.isoformat() }}" /> |
||||
|
{% endif %} |
||||
|
{% if article.locale_modified and article.modified %} |
||||
|
<meta property="" content="{{ article.modified.isoformat() }}" /> |
||||
|
{% endif %} |
||||
|
<meta name="twitter:card" content="summary_large_image"> |
||||
|
<meta name="twitter:title" content="{{ article.title|striptags|e }} {%if article.subtitle %} - {{ article.subtitle|striptags|e }} {% endif %}"> |
||||
|
<meta name="twitter:description" content="{{article.description|striptags|e}}"> |
||||
|
{% if article.featured_image %} |
||||
|
<meta property="og:image" content="{{article.featured_image}}" /> |
||||
|
<meta property="og:image:secure_url" content="{{article.featured_image}}" /> |
||||
|
<meta name="twitter:image" content="{{article.featured_image}}" > |
||||
|
{% else %} |
||||
|
{% if FEATURED_IMAGE %} |
||||
|
<meta property="og:image" content="{{FEATURED_IMAGE}}" /> |
||||
|
<meta name="twitter:image" content="{{FEATURED_IMAGE}}" > |
||||
|
{% endif %} |
||||
|
{% endif %} |
||||
|
{% endif %} |
||||
|
{% if not article %} |
||||
|
<meta property="og:title" content="{{ SITENAME|striptags|e }}"/> |
||||
|
<meta name="twitter:title" content="{{ SITENAME|striptags|e }}"> |
||||
|
<meta name="twitter:card" content="summary" /> |
||||
|
<meta property="og:url" content="{{ SITEURL }}" /> |
||||
|
<meta property="og:description" content="the spacekeet is a DIY satellite observatory trying to map out man-made space from the Utrecht Science Park"> |
||||
|
<meta name="twitter:description" content="the spacekeet is a DIY satellite observatory trying to map out man-made psace from the Utrecht Science Park"> |
||||
|
<meta property="og:site_name" content="{{ SITENAME|striptags|e }}" /> |
||||
|
<meta property="og:article:author" content="{{ AUTHOR }}" /> |
||||
|
{% if FEATURED_IMAGE %} |
||||
|
<meta property="og:image" content="{{FEATURED_IMAGE}}" /> |
||||
|
<meta name="twitter:image" content="{{FEATURED_IMAGE}}" > |
||||
|
{% endif %} |
||||
|
{% endif %} |
||||
|
{% endmacro %} |
||||
|
|
||||
|
|
@ -0,0 +1,10 @@ |
|||||
|
{% extends "base.html" %} |
||||
|
|
||||
|
{% block title %}{{ SITENAME }} - Tags{% endblock %} |
||||
|
|
||||
|
{% block content %} |
||||
|
<h1>Tags for {{ SITENAME }}</h1> |
||||
|
{%- for tag, articles in tags|sort %} |
||||
|
<li><a href="{{ SITEURL }}/{{ tag.url }}">{{ tag }}</a> ({{ articles|count }})</li> |
||||
|
{% endfor %} |
||||
|
{% endblock %} |
@ -0,0 +1,9 @@ |
|||||
|
{% macro translations_for(article) %} |
||||
|
{% if article.translations %} |
||||
|
Translations: |
||||
|
{% for translation in article.translations %} |
||||
|
<a href="{{ SITEURL }}/{{ translation.url }}">{{ translation.lang }}</a> |
||||
|
{% endfor %} |
||||
|
{% endif %} |
||||
|
{% endmacro %} |
||||
|
|
Loading…
Reference in new issue