initial commit
authorM. Taylor Saotome-Westlake <[email protected]>
Sun, 4 Sep 2016 12:13:32 +0000 (05:13 -0700)
committerM. Taylor Saotome-Westlake <[email protected]>
Sun, 4 Sep 2016 12:13:32 +0000 (05:13 -0700)
53 files changed:
.gitignore [new file with mode: 0644]
Makefile [new file with mode: 0644]
content/blanchards-dangerous-idea-and-the-engines-of-delusion.md [new file with mode: 0644]
develop_server.sh [new file with mode: 0755]
fabfile.py [new file with mode: 0644]
pelicanconf.py [new file with mode: 0644]
publishconf.py [new file with mode: 0644]
theme/static/css/main.css [new file with mode: 0644]
theme/static/css/pygment.css [new file with mode: 0644]
theme/static/images/icons/blogger-18px.png [new file with mode: 0644]
theme/static/images/icons/blogger-32px.png [new file with mode: 0644]
theme/static/images/icons/delicious-18px.png [new file with mode: 0644]
theme/static/images/icons/delicious-32px.png [new file with mode: 0644]
theme/static/images/icons/digg-18px.png [new file with mode: 0644]
theme/static/images/icons/digg-32px.png [new file with mode: 0644]
theme/static/images/icons/facebook-18px.png [new file with mode: 0644]
theme/static/images/icons/facebook-32px.png [new file with mode: 0644]
theme/static/images/icons/feed-18px.png [new file with mode: 0644]
theme/static/images/icons/feed-32px.png [new file with mode: 0644]
theme/static/images/icons/flicker-18px.png [new file with mode: 0644]
theme/static/images/icons/flicker-32px.png [new file with mode: 0644]
theme/static/images/icons/github-18px.png [new file with mode: 0644]
theme/static/images/icons/github-32px.png [new file with mode: 0644]
theme/static/images/icons/google-18px.png [new file with mode: 0644]
theme/static/images/icons/google-32px.png [new file with mode: 0644]
theme/static/images/icons/instagram-18px.png [new file with mode: 0644]
theme/static/images/icons/instagram-32px.png [new file with mode: 0644]
theme/static/images/icons/linkedin-18px.png [new file with mode: 0644]
theme/static/images/icons/linkedin-32px.png [new file with mode: 0644]
theme/static/images/icons/pinterest-18px.png [new file with mode: 0644]
theme/static/images/icons/pinterest-32px.png [new file with mode: 0644]
theme/static/images/icons/skype-18px.png [new file with mode: 0644]
theme/static/images/icons/skype-32px.png [new file with mode: 0644]
theme/static/images/icons/tumblr-18px.png [new file with mode: 0644]
theme/static/images/icons/tumblr-32px.png [new file with mode: 0644]
theme/static/images/icons/twitter-18px.png [new file with mode: 0644]
theme/static/images/icons/twitter-32px.png [new file with mode: 0644]
theme/static/images/icons/video-18px.png [new file with mode: 0644]
theme/static/images/icons/video-32px.png [new file with mode: 0644]
theme/static/images/icons/youtube-18px.png [new file with mode: 0644]
theme/static/images/icons/youtube-32px.png [new file with mode: 0644]
theme/templates/article.html [new file with mode: 0644]
theme/templates/article_link.inc.html [new file with mode: 0644]
theme/templates/article_summary.inc.html [new file with mode: 0644]
theme/templates/author.html [new file with mode: 0644]
theme/templates/base.html [new file with mode: 0644]
theme/templates/category.html [new file with mode: 0644]
theme/templates/index.html [new file with mode: 0644]
theme/templates/metadata.inc.html [new file with mode: 0644]
theme/templates/page.html [new file with mode: 0644]
theme/templates/pagination.inc.html [new file with mode: 0644]
theme/templates/tag.html [new file with mode: 0644]
theme/templates/tags.html [new file with mode: 0644]

diff --git a/.gitignore b/.gitignore
new file mode 100644 (file)
index 0000000..0a2d2b5
--- /dev/null
@@ -0,0 +1,8 @@
+bin/
+lib/
+lib64
+pyvenv.cfg
+pip-selfcheck.json
+__pycache__/
+
+output/
\ No newline at end of file
diff --git a/Makefile b/Makefile
new file mode 100644 (file)
index 0000000..d1ddf80
--- /dev/null
+++ b/Makefile
@@ -0,0 +1,124 @@
+PY?=python3
+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
+
+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
+
+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
diff --git a/content/blanchards-dangerous-idea-and-the-engines-of-delusion.md b/content/blanchards-dangerous-idea-and-the-engines-of-delusion.md
new file mode 100644 (file)
index 0000000..24e4e70
--- /dev/null
@@ -0,0 +1,5 @@
+Title: Blanchard's Dangerous Idea and the Engines of Delusion
+Date: 2016-09-04 5:00
+Category: trans
+
+Ray Blanchard proposed that there are two distinct etiologies for MtF transsexualism: the primary type are males who behave extremely effeminately from early childhood in a way that is obvious to everyone, grow up to be attracted to men, and transition in their late teens because they find it easier to fit into society as women than as super-femme gay men. The second type, more common in Western countries, were fairly typical as boys but after puberty somehow develop autogynephilia, a kind of misdirected ordinary heterosexuality in which in addition to wanting to get the girl, they want to, ah, be the girl.
\ No newline at end of file
diff --git a/develop_server.sh b/develop_server.sh
new file mode 100755 (executable)
index 0000000..ae8f29e
--- /dev/null
@@ -0,0 +1,103 @@
+#!/usr/bin/env bash
+##
+# This section should match your Makefile
+##
+PY=${PY:-python3}
+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
diff --git a/fabfile.py b/fabfile.py
new file mode 100644 (file)
index 0000000..95796b5
--- /dev/null
@@ -0,0 +1,94 @@
+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 = '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), 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}".format(**env))
+    local("git push origin {github_pages_branch}".format(**env))
diff --git a/pelicanconf.py b/pelicanconf.py
new file mode 100644 (file)
index 0000000..82150d3
--- /dev/null
@@ -0,0 +1,36 @@
+#!/usr/bin/env python
+# -*- coding: utf-8 -*- #
+from __future__ import unicode_literals
+
+AUTHOR = 'M. Taylor Saotome-Westlake'
+SITENAME = 'The Scintillating But Ultimately Untrue Thought'
+SITEURL = ''
+
+PATH = 'content'
+
+TIMEZONE = 'America/New_York'
+
+DEFAULT_LANG = 'en'
+
+# 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 = (
+    ('On the Science of Changing Sex', "https://sillyolme.wordpress.com/"),
+    ('Third Way Trans', "https://thirdwaytrans.com/"),
+)
+
+DEFAULT_PAGINATION = 12
+
+ARTICLE_URL = '{date:%Y}/{date:%b}/{slug}/'
+ARTICLE_SAVE_AS = '{date:%Y}/{date:%b}/{slug}/index.html'
+
+THEME = 'theme'
+
+# Uncomment following line if you want document-relative URLs when developing
+#RELATIVE_URLS = True
diff --git a/publishconf.py b/publishconf.py
new file mode 100644 (file)
index 0000000..d9d58c4
--- /dev/null
@@ -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 = 'ultimatelyuntruethought.space'
+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 = ""
diff --git a/theme/static/css/main.css b/theme/static/css/main.css
new file mode 100644 (file)
index 0000000..6725c0f
--- /dev/null
@@ -0,0 +1,311 @@
+/*
+Colors :
+- #40403F
+- #4D4D4C
+- #7F7F7E
+- #E5E5E3
+- #F0F0F0
+*/
+
+/* Imports */
+
+@import url("pygment.css");
+
+
+/* Latout */
+
+article,
+figcaption,
+figure,
+footer,
+header,
+nav,
+section,
+time {
+  display: block;
+}
+
+html {
+  font-size: 100%;
+  -ms-text-size-adjust: 100%;
+  -webkit-text-size-adjust: 100%;
+}
+body {
+  font-family: 'Source Sans Pro', sans-serif;
+  font-size: 16px;
+  line-height: 150%;
+  text-align: left;
+  color: #4D4D4C;
+  padding: 0;
+  min-width: 740px;
+}
+
+header {
+  background-color: #40403F;
+  height: 50px;
+  line-height: 50px;
+  padding: 0 1em;
+}
+
+.wrapper {
+  display: table;
+  width: 100%;
+}
+
+.content {
+  display: table-cell;
+  border-left: 1px solid #d6d6d6;
+  border-right: 1px dotted #D6D6D6;
+  padding: 0 20px 1em 20px;
+}
+
+.sidebar {
+  display: table-cell;
+  width: 25%;
+  border-right: 1px solid #d6d6d6;
+  padding: 0 20px 1em 20px;
+}
+
+footer {
+  border-top: 1px dotted #D6D6D6;
+  line-height: 30px;
+  padding: 0 1em;
+  font-size: 0.8em;
+}
+
+
+/* Header */
+
+header a {
+  color: #E5E5E3;
+  border-bottom: none;
+}
+
+header a.title {
+  font-size: 1.25em;
+}
+
+header .feeds {
+  float: right;
+  text-align: right;
+  width: 25%;
+  height: 41px;
+  padding-top: 9px;
+}
+
+header .feeds a {
+  display: block;
+  float: right;
+  padding-right: 5px;
+  width: 40px;
+}
+
+header .feeds a:hover,
+header .feeds a:active {
+  border-bottom: none;
+}
+
+header .pages {
+  float: right;
+}
+
+header .pages a {
+  font-size: 1.1em;
+}
+
+
+/* Sidebar */
+
+
+/* Titles */
+
+h1, h2, h3, h4, h5, h6 {
+    font-family: "Source Sans Pro",sans-serif;
+    font-weight: 400;
+    text-shadow: 0.1em 0.1em 0.1em #EFEFEF;
+    line-height: 125%;
+}
+
+h1 {
+  font-size: 2em;
+  margin: 0.67em 0;
+  padding: 0.7em 0 0.3em;
+}
+
+h1 a {
+  color: inherit;
+  border-bottom: none;
+}
+
+
+/* Texts */
+
+p {
+  margin: 0.8em 0 0.5em;
+}
+
+a {
+  text-decoration: none;
+  border-bottom: 1px dotted #4D4D4C;
+  color: #4D4D4C;
+}
+
+a:hover, a:active {
+  text-decoration: none;
+  border-bottom: 1px dotted #4271AE;
+  color: #4271AE;
+}
+
+.literal {
+  font-size: 0.9em;
+  border: 1px solid #F0F0F0;
+  padding: 0px 5px;
+}
+
+pre {
+  font-family: 'Source Code Pro',monospace;
+  background: none repeat scroll 0 0 #F0F0F0;
+  border-radius: 2px;
+  font-size: 0.9em;
+  font-style: normal;
+  letter-spacing: 0.015em;
+  line-height: 130%;
+  padding: 0.7em;
+  white-space: pre-wrap;
+  word-wrap: break-word;
+}
+
+hr {
+  margin: 40px 5% 60px 5%;
+  color: #d6d6d6;
+  box-shadow: 0.1em 0.1em 0.1em #EFEFEF;
+  border-radius: 5px;
+}
+
+
+/* Article */
+
+article.summary {
+  margin-bottom: 40px;
+  clear: both;
+}
+
+article.summary > div {
+  margin-left: 28%;
+}
+
+article.full .metadata,
+article.summary .metadata {
+  padding: 1%;  
+  border: 1px dotted #EFEFEF;
+  box-shadow: 0.1em 0.1em 0.1em #EFEFEF;
+  font-style: italic;
+}
+
+article.full .metadata {
+  width: 25%;
+  float: right;
+  margin: 0 0 2% 1%;
+}
+
+article.summary .metadata {
+  width: 23%;
+  float: left;
+  margin: 0 1% 2% 0 ;
+}
+
+.metadata p {
+  margin: 0;
+}
+
+/* Listings */
+
+ol.archive li {
+  margin: 8px 0;
+}
+
+ol.archive li time,
+ol.archive li .tags
+ {
+  line-height: 140%;
+  font-size: 0.8em;
+  margin: 0;
+}
+
+
+/* Social */
+
+.social {
+  list-style-type: none;
+  padding-left: 20px;
+}
+
+.social li {
+  clear: both;
+}
+
+.social a {}
+
+.social i { 
+  float: left;
+  margin-right: 3px;
+  padding-top: 4px;
+}
+.social a[href*='twitter.com'] + i:before {content: url('../images/icons/twitter-18px.png'); }
+.social a[href*='linkedin.com'] + i:before {content: url('../images/icons/linkedin-18px.png'); }
+.social a[href*='github.com'] + i:before {content: url('../images/icons/github-18px.png'); }
+.social a[href*='google.com'] + i:before {content: url('../images/icons/google-18px.png'); }
+.social a[href*='delicious.com']:before {content: url('../images/icons/delicious-18px.png'); }
+.social a[href*='digg.com']:before {content: url('../images/icons/digg-18px.png'); }
+.social a[href*='facebook.com']:before {content: url('../images/icons/facebook-18px.png'); }
+.social a[href*='stackoverflow.com']:before {content: url('../images/icons/stackoverfow-18px.png'); }
+.social a[href*='rss.xml']:before {content: url('../images/icons/feed-18px.png'); }
+.social a[href*='atom.xml']:before {content: url('../images/icons/feed-18px.png'); }
+
+
+/* Tag cloud */
+
+ul.tagcloud {
+  list-style: none;
+  padding: 0;
+  width: 50%;
+  margin: 0 auto;
+  line-height: 200%;
+}
+
+ul.tagcloud li {
+    display: inline-block;
+}
+
+li.tag-1 { font-size: 175%; margin: 0 1em; }
+li.tag-2 { font-size: 150%; margin: 0 1em; }
+li.tag-3 { font-size: 125%; margin: 0 1em; }
+li.tag-4 { font-size: 110%; margin: 0 1em; }
+
+/* Pagination */
+
+.pagination {
+  width: 100px;
+  margin: 1em auto;
+}
+
+/* Responsive */
+
+@media (min-width: 1280px) {
+  body {
+    margin: 0 16%;
+  }
+}
+
+@media (max-width: 1280px) {
+  body {
+    margin: 0 12%;
+  }
+}
+
+@media (max-width: 979px) {
+  body {
+    margin: 0 4%;
+  }
+}
+
diff --git a/theme/static/css/pygment.css b/theme/static/css/pygment.css
new file mode 100644 (file)
index 0000000..594b0fa
--- /dev/null
@@ -0,0 +1,205 @@
+.hll {
+background-color:#FFFFCC;
+}
+.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;
+}
diff --git a/theme/static/images/icons/blogger-18px.png b/theme/static/images/icons/blogger-18px.png
new file mode 100644 (file)
index 0000000..b7d19f6
Binary files /dev/null and b/theme/static/images/icons/blogger-18px.png differ
diff --git a/theme/static/images/icons/blogger-32px.png b/theme/static/images/icons/blogger-32px.png
new file mode 100644 (file)
index 0000000..51e39c7
Binary files /dev/null and b/theme/static/images/icons/blogger-32px.png differ
diff --git a/theme/static/images/icons/delicious-18px.png b/theme/static/images/icons/delicious-18px.png
new file mode 100644 (file)
index 0000000..e352738
Binary files /dev/null and b/theme/static/images/icons/delicious-18px.png differ
diff --git a/theme/static/images/icons/delicious-32px.png b/theme/static/images/icons/delicious-32px.png
new file mode 100644 (file)
index 0000000..29cf6ac
Binary files /dev/null and b/theme/static/images/icons/delicious-32px.png differ
diff --git a/theme/static/images/icons/digg-18px.png b/theme/static/images/icons/digg-18px.png
new file mode 100644 (file)
index 0000000..102cddf
Binary files /dev/null and b/theme/static/images/icons/digg-18px.png differ
diff --git a/theme/static/images/icons/digg-32px.png b/theme/static/images/icons/digg-32px.png
new file mode 100644 (file)
index 0000000..2fd6a18
Binary files /dev/null and b/theme/static/images/icons/digg-32px.png differ
diff --git a/theme/static/images/icons/facebook-18px.png b/theme/static/images/icons/facebook-18px.png
new file mode 100644 (file)
index 0000000..1a0ff0d
Binary files /dev/null and b/theme/static/images/icons/facebook-18px.png differ
diff --git a/theme/static/images/icons/facebook-32px.png b/theme/static/images/icons/facebook-32px.png
new file mode 100644 (file)
index 0000000..07d21a6
Binary files /dev/null and b/theme/static/images/icons/facebook-32px.png differ
diff --git a/theme/static/images/icons/feed-18px.png b/theme/static/images/icons/feed-18px.png
new file mode 100644 (file)
index 0000000..2ce3706
Binary files /dev/null and b/theme/static/images/icons/feed-18px.png differ
diff --git a/theme/static/images/icons/feed-32px.png b/theme/static/images/icons/feed-32px.png
new file mode 100644 (file)
index 0000000..52ce22b
Binary files /dev/null and b/theme/static/images/icons/feed-32px.png differ
diff --git a/theme/static/images/icons/flicker-18px.png b/theme/static/images/icons/flicker-18px.png
new file mode 100644 (file)
index 0000000..890cc18
Binary files /dev/null and b/theme/static/images/icons/flicker-18px.png differ
diff --git a/theme/static/images/icons/flicker-32px.png b/theme/static/images/icons/flicker-32px.png
new file mode 100644 (file)
index 0000000..fd02aff
Binary files /dev/null and b/theme/static/images/icons/flicker-32px.png differ
diff --git a/theme/static/images/icons/github-18px.png b/theme/static/images/icons/github-18px.png
new file mode 100644 (file)
index 0000000..6322e4f
Binary files /dev/null and b/theme/static/images/icons/github-18px.png differ
diff --git a/theme/static/images/icons/github-32px.png b/theme/static/images/icons/github-32px.png
new file mode 100644 (file)
index 0000000..601293f
Binary files /dev/null and b/theme/static/images/icons/github-32px.png differ
diff --git a/theme/static/images/icons/google-18px.png b/theme/static/images/icons/google-18px.png
new file mode 100644 (file)
index 0000000..db2c9b2
Binary files /dev/null and b/theme/static/images/icons/google-18px.png differ
diff --git a/theme/static/images/icons/google-32px.png b/theme/static/images/icons/google-32px.png
new file mode 100644 (file)
index 0000000..ea2d521
Binary files /dev/null and b/theme/static/images/icons/google-32px.png differ
diff --git a/theme/static/images/icons/instagram-18px.png b/theme/static/images/icons/instagram-18px.png
new file mode 100644 (file)
index 0000000..b4a99d6
Binary files /dev/null and b/theme/static/images/icons/instagram-18px.png differ
diff --git a/theme/static/images/icons/instagram-32px.png b/theme/static/images/icons/instagram-32px.png
new file mode 100644 (file)
index 0000000..f4f3cf6
Binary files /dev/null and b/theme/static/images/icons/instagram-32px.png differ
diff --git a/theme/static/images/icons/linkedin-18px.png b/theme/static/images/icons/linkedin-18px.png
new file mode 100644 (file)
index 0000000..7540cb5
Binary files /dev/null and b/theme/static/images/icons/linkedin-18px.png differ
diff --git a/theme/static/images/icons/linkedin-32px.png b/theme/static/images/icons/linkedin-32px.png
new file mode 100644 (file)
index 0000000..9fb6695
Binary files /dev/null and b/theme/static/images/icons/linkedin-32px.png differ
diff --git a/theme/static/images/icons/pinterest-18px.png b/theme/static/images/icons/pinterest-18px.png
new file mode 100644 (file)
index 0000000..52370d6
Binary files /dev/null and b/theme/static/images/icons/pinterest-18px.png differ
diff --git a/theme/static/images/icons/pinterest-32px.png b/theme/static/images/icons/pinterest-32px.png
new file mode 100644 (file)
index 0000000..c337465
Binary files /dev/null and b/theme/static/images/icons/pinterest-32px.png differ
diff --git a/theme/static/images/icons/skype-18px.png b/theme/static/images/icons/skype-18px.png
new file mode 100644 (file)
index 0000000..e89009c
Binary files /dev/null and b/theme/static/images/icons/skype-18px.png differ
diff --git a/theme/static/images/icons/skype-32px.png b/theme/static/images/icons/skype-32px.png
new file mode 100644 (file)
index 0000000..16b8a31
Binary files /dev/null and b/theme/static/images/icons/skype-32px.png differ
diff --git a/theme/static/images/icons/tumblr-18px.png b/theme/static/images/icons/tumblr-18px.png
new file mode 100644 (file)
index 0000000..cbdcb80
Binary files /dev/null and b/theme/static/images/icons/tumblr-18px.png differ
diff --git a/theme/static/images/icons/tumblr-32px.png b/theme/static/images/icons/tumblr-32px.png
new file mode 100644 (file)
index 0000000..fcf5731
Binary files /dev/null and b/theme/static/images/icons/tumblr-32px.png differ
diff --git a/theme/static/images/icons/twitter-18px.png b/theme/static/images/icons/twitter-18px.png
new file mode 100644 (file)
index 0000000..94e9522
Binary files /dev/null and b/theme/static/images/icons/twitter-18px.png differ
diff --git a/theme/static/images/icons/twitter-32px.png b/theme/static/images/icons/twitter-32px.png
new file mode 100644 (file)
index 0000000..f4f3cf6
Binary files /dev/null and b/theme/static/images/icons/twitter-32px.png differ
diff --git a/theme/static/images/icons/video-18px.png b/theme/static/images/icons/video-18px.png
new file mode 100644 (file)
index 0000000..ae73f41
Binary files /dev/null and b/theme/static/images/icons/video-18px.png differ
diff --git a/theme/static/images/icons/video-32px.png b/theme/static/images/icons/video-32px.png
new file mode 100644 (file)
index 0000000..2d24623
Binary files /dev/null and b/theme/static/images/icons/video-32px.png differ
diff --git a/theme/static/images/icons/youtube-18px.png b/theme/static/images/icons/youtube-18px.png
new file mode 100644 (file)
index 0000000..cc2c3f9
Binary files /dev/null and b/theme/static/images/icons/youtube-18px.png differ
diff --git a/theme/static/images/icons/youtube-32px.png b/theme/static/images/icons/youtube-32px.png
new file mode 100644 (file)
index 0000000..181dd51
Binary files /dev/null and b/theme/static/images/icons/youtube-32px.png differ
diff --git a/theme/templates/article.html b/theme/templates/article.html
new file mode 100644 (file)
index 0000000..6869f3f
--- /dev/null
@@ -0,0 +1,49 @@
+{% extends "base.html" %}
+{% block title %}{{ article.title }} - {{ SITENAME }}{% endblock %}
+
+{% block extra_meta %}
+
+       <meta name="description" content="{{ article.summary|striptags }}">
+
+{% if PELICAN_SIMPLEGREY_TWITTER_CARD_ACCOUNT %}
+       <meta name="twitter:card" content="summary">
+       <meta name="twitter:creator" content="@{{ PELICAN_SIMPLEGREY_TWITTER_CARD_ACCOUNT }}">
+       <meta name="twitter:title" content="{{ article.title }}">
+       <meta name="twitter:description" content="{{ article.summary|striptags }}">
+       <meta name="twitter:url" content="{{ SITEURL }}/{{ article.url }}">
+{% endif %}
+{% endblock %}
+
+
+{% block content %}
+       <article class="full">
+                       
+               <h1>{{ article.title }}</h1>
+               
+               {% include 'metadata.inc.html' %}
+               
+               {{ article.content }}   
+
+       </article>
+
+    <p>
+       <a href="https://twitter.com/share" class="twitter-share-button" data-via="{{ TWITTER_USERNAME }}" data-lang="en" data-size="large" data-related="{{ TWITTER_USERNAME }}">Tweet</a>
+       <script>!function(d,s,id){var js,fjs=d.getElementsByTagName(s)[0];if(!d.getElementById(id)){js=d.createElement(s);js.id=id;js.src="//platform.twitter.com/widgets.js";fjs.parentNode.insertBefore(js,fjs);}}(document,"script","twitter-wjs");</script>
+       </p>
+
+       {% if DISQUS_SITENAME %}
+       <div class="comments">
+       <h2>Comments !</h2>
+           <div id="disqus_thread"></div>
+           <script type="text/javascript">
+              var disqus_identifier = "{{ article.url }}";
+              (function() {
+              var dsq = document.createElement('script'); dsq.type = 'text/javascript'; dsq.async = true;
+              dsq.src = 'http://{{ DISQUS_SITENAME }}.disqus.com/embed.js';
+              (document.getElementsByTagName('head')[0] || document.getElementsByTagName('body')[0]).appendChild(dsq);
+             })();
+           </script>
+       </div>
+       {% endif %}
+
+{% endblock %}
\ No newline at end of file
diff --git a/theme/templates/article_link.inc.html b/theme/templates/article_link.inc.html
new file mode 100644 (file)
index 0000000..a3122d9
--- /dev/null
@@ -0,0 +1,4 @@
+<a href="{{ SITEURL }}/{{ article.url }}" rel="bookmark" title="Permalink to {{ article.title}}">{{ article.title }}</a>
+  <time datetime="{{ article.date.isoformat() }}" pubdate>{{ article.locale_date }}</time>
+  {% if article.tags %}<p class="tags">tags: {% for tag in article.tags %}<a href="{{ SITEURL }}/{{ tag.url }}">{{ tag }}</a>{% endfor %}</p>{% endif %}
+</a>
diff --git a/theme/templates/article_summary.inc.html b/theme/templates/article_summary.inc.html
new file mode 100644 (file)
index 0000000..9aa6947
--- /dev/null
@@ -0,0 +1,9 @@
+<article class="summary">
+  {% include 'metadata.inc.html' %}
+  <div>
+    <h2>
+      <a href="{{ SITEURL }}/{{ article.url }}" rel="bookmark" title="Permalink to {{ article.title}}">{{ article.title }}</a>
+    </h2>
+    <p>{{ article.summary }}</p>
+  </div>
+</article>
diff --git a/theme/templates/author.html b/theme/templates/author.html
new file mode 100644 (file)
index 0000000..4ba8dfc
--- /dev/null
@@ -0,0 +1,14 @@
+{% extends "base.html" %}
+{% block title %}{{ author }} - {{ SITENAME }}{% endblock %}
+
+{% block content %}
+
+<h1>Posts published by: {{ author }}</h1>
+
+{% for article in articles_page.object_list %}
+  {% include 'article_summary.inc.html' %}
+{% endfor %}
+
+{% include 'pagination.inc.html' %}
+
+{% endblock %}
diff --git a/theme/templates/base.html b/theme/templates/base.html
new file mode 100644 (file)
index 0000000..8b15510
--- /dev/null
@@ -0,0 +1,111 @@
+<!doctype html>
+<html lang="{{ HTML_LANG }}">
+<head>
+       <meta charset="utf-8"/>
+       <title>{% block title %}{{ SITENAME }}{%endblock%}</title>
+       <meta name="author" content="{{ AUTHOR }}">
+
+       {% block extra_meta %}
+       {% endblock %}
+
+       <link rel="top" href="#" /><link href='http://fonts.googleapis.com/css?family=Source+Sans+Pro:300,400,600,300italic,400italic,600italic|Source+Code+Pro' rel='stylesheet' type='text/css'></link>
+       <link rel="stylesheet" href="{{ SITEURL }}/theme/css/{{ CSS_FILE }}" type="text/css" />
+
+       {% block scripts %}
+       {% endblock %}
+
+    {% 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 %}
+</head>
+
+<body>
+{{ FEED_ATOM }}
+    <div class="container">
+
+         <header role="banner">
+           <div class="feeds">
+             {% if FEED_ALL_ATOM %}
+               <a href="{{ SITEURL }}/{{ FEED_ALL_ATOM }}" rel="alternate"><img src="{{ SITEURL }}/{{ THEME_STATIC_DIR }}/images/icons/feed-32px.png" alt="atom feed"/></a>
+             {% endif %}
+          {% if FEED_ALL_RSS %}
+            <a href="{{ SITEURL }}/{{ FEED_ALL_RSS }}" rel="alternate"><img src="{{ SITEURL }}/{{ THEME_STATIC_DIR }}/images/icons/feed-32px.png" alt="rss feed"/></a>
+          {% endif %}
+           </div>
+           {% if PAGES %}
+             <nav class="pages">
+               {% for p in PAGES %}
+                         <a href="{{ SITEURL }}/{{ p.url }}">{{ p.title }}</a>
+                         {% if not loop.last %}-{% endif %}
+                       {% endfor %}
+             </nav>
+           {% endif %}
+               <a href="{{ SITEURL }}" class="title">{{ SITENAME }}</a>
+      </header>
+
+         <div class="wrapper">
+
+                 <div role="main" class="content">
+                   {% block content %}{% endblock %}
+                 </div>
+
+                 <div class="sidebar">
+
+               <nav>
+                 <h2>Categories</h2>
+                 <ul>
+                   {% for cat, null in categories %}
+                     <li {% if cat == category %}class="active"{% endif %}><a href="{{ SITEURL }}/{{ cat.url }}">{{ cat }}</a></li>
+                   {% endfor %}
+                 </ul>
+               </nav>
+
+               {% if SOCIAL %}
+                 <aside>
+                 <h2>Social</h2>
+                           <ul class="social">
+                                 {% for name, link in SOCIAL %}
+                                 <li><a href="{{ link }}">{{ name }}</a><i></i></li>
+                                 {% endfor %}
+                           </ul>
+                         </aside>
+                       {% endif %}
+
+               {% if LINKS %}
+                 <aside>
+                   <h2>Blogroll</h2>
+                   <ul>
+                     {% for name, link in LINKS %}
+                       <li><a href="{{ link }}">{{ name }}</a></li>
+                     {% endfor %}
+                   </ul>
+                 </aside>
+               {% endif %}
+
+                 </div>
+
+         </div>
+
+      <footer>
+               <p role="contentinfo">
+                 ©2016 {{ AUTHOR }} • Proudly powered by <a href="http://alexis.notmyidea.org/pelican/">pelican</a>. Theme modified from <a href="https://github.com/fle/pelican-simplegrey">pelican-simplegrey</a>.
+       </p>
+
+         </footer>
+
+       </div>
+
+       {% if GOOGLE_ANALYTICS %}
+         <script>
+               var _gaq=[['_setAccount','{{ GOOGLE_ANALYTICS }}'],['_trackPageview']];
+               (function(d,t){var g=d.createElement(t),s=d.getElementsByTagName(t)[0];
+               g.src=('https:'==location.protocol?'//ssl':'//www')+'.google-analytics.com/ga.js';
+               s.parentNode.insertBefore(g,s)}(document,'script'));
+         </script>
+    {% endif %}
+
+</body>
+</html>
diff --git a/theme/templates/category.html b/theme/templates/category.html
new file mode 100644 (file)
index 0000000..3d43b98
--- /dev/null
@@ -0,0 +1,14 @@
+{% extends "base.html" %}
+{% block title %}{{ category }} - {{ SITENAME }}{% endblock %}
+
+{% block content %}
+
+<h1>Posts categorized under: {{ category }}</h1>
+
+{% for article in articles_page.object_list %}
+  {% include 'article_summary.inc.html' %}
+{% endfor %}
+
+{% include 'pagination.inc.html' %}
+
+{% endblock %}
diff --git a/theme/templates/index.html b/theme/templates/index.html
new file mode 100644 (file)
index 0000000..8f82005
--- /dev/null
@@ -0,0 +1,36 @@
+{% extends "base.html" %}
+{% block content_title %}{% endblock %}
+
+{% block content %}
+
+{% for article in articles %}
+
+    {% if loop.index == 1 %}
+
+      <article>
+        <h1><a href="{{ SITEURL }}/{{ article.url }}">{{ article.title }}</a></h1>
+        {{ article.content }}
+      </article>
+
+      <hr />
+
+      {% if loop.length  > 1 %}
+        <div>
+          <h3>Last posts</h3>
+          <ol class="archive">
+      {% endif %}
+    
+    {% elif loop.index < 7 %}
+      <li>
+        {% include 'article_link.inc.html' %}
+      </li>
+    {% endif %}
+
+{% endfor %}
+
+{% if articles|length > 1 %}
+          </ol>
+        </div>
+{% endif %}
+
+{% endblock content %}
diff --git a/theme/templates/metadata.inc.html b/theme/templates/metadata.inc.html
new file mode 100644 (file)
index 0000000..63f7d7d
--- /dev/null
@@ -0,0 +1,11 @@
+<div class="metadata">
+  <time datetime="{{ article.date.isoformat() }}" pubdate>{{ article.locale_date }}</time>
+  {% if article.author %}
+    <address class="vcard author">
+      by <a class="url fn" href="{{ SITEURL }}/{{ article.author.url }}">{{ article.author }}</a>
+    </address>
+  {% endif %}
+  in <a href="{{ SITEURL }}/{{ article.category.url }}">{{ article.category }}</a>
+  {% if article.tags %}<p class="tags">tagged {% for tag in article.tags %}<a href="{{ SITEURL }}/{{ tag.url }}">{{ tag }}</a>{% if not loop.last%}, {% endif %}{% endfor %}</p>{% endif %}
+  {% if PDF_PROCESSOR %}<p><a href="{{ SITEURL }}/pdf/{{ article.slug }}.pdf">Download the .pdf</a></p>{% endif %}
+</div>
diff --git a/theme/templates/page.html b/theme/templates/page.html
new file mode 100644 (file)
index 0000000..220266d
--- /dev/null
@@ -0,0 +1,9 @@
+{% extends "base.html" %}
+{% block title %}{{ page.title }}- {{ SITENAME }}{% endblock %}
+
+{% block content %}
+
+<h1>{{ page.title }}</h1>
+{{ page.content }}             
+
+{% endblock %}
\ No newline at end of file
diff --git a/theme/templates/pagination.inc.html b/theme/templates/pagination.inc.html
new file mode 100644 (file)
index 0000000..64a80b3
--- /dev/null
@@ -0,0 +1,15 @@
+{% if DEFAULT_PAGINATION %}
+<div class="pagination">
+    {% if articles_page.has_previous() %}
+        {% if articles_page.previous_page_number() == 1 %}
+            <a href="{{ SITEURL }}/{{ page_name }}.html">&laquo;</a>
+        {% else %}
+            <a href="{{ SITEURL }}/{{ page_name }}{{ articles_page.previous_page_number() }}.html">&laquo;</a>
+        {% endif %}
+    {% endif %}
+    Page {{ articles_page.number }} / {{ articles_paginator.num_pages }}
+    {% if articles_page.has_next() %}
+        <a href="{{ SITEURL }}/{{ page_name }}{{ articles_page.next_page_number() }}.html">&raquo;</a>
+    {% endif %}
+</div>
+{% endif %}
diff --git a/theme/templates/tag.html b/theme/templates/tag.html
new file mode 100644 (file)
index 0000000..c4181ac
--- /dev/null
@@ -0,0 +1,14 @@
+{% extends "base.html" %}
+{% block title %}{{ tag }} - {{ SITENAME }}{% endblock %}
+
+{% block content %}
+
+<h1>Post tagged: {{ tag }}</h1>
+
+{% for article in articles_page.object_list %}
+  {% include 'article_summary.inc.html' %}
+{% endfor %}
+
+{% include 'pagination.inc.html' %}
+
+{% endblock %}
\ No newline at end of file
diff --git a/theme/templates/tags.html b/theme/templates/tags.html
new file mode 100644 (file)
index 0000000..a97828d
--- /dev/null
@@ -0,0 +1,14 @@
+{% extends "base.html" %}
+{% block title %}{{ SITENAME }}{% endblock %}
+
+{% block content %}
+
+<h1>Tags</h1>
+       
+<ul class="tagcloud">
+  {% for tag in tag_cloud %}
+    <li class="tag-{{ tag.1 }}"><a href="{{ SITEURL }}/{{ tag.0.url }}">{{ tag.0 }}</a></li>
+  {% endfor %}
+</ul>
+
+{% endblock %}