mirror of
https://github.com/getpelican/pelican.git
synced 2025-10-15 20:28:56 +02:00
Add a new theme "martyalchin", based on http://martyalchin.com
This commit is contained in:
parent
5a9dbcab1c
commit
35dc0bf34c
12 changed files with 468 additions and 5 deletions
|
|
@ -30,7 +30,7 @@ if __name__ == '__main__':
|
||||||
|
|
||||||
generator = Generator(args.settings, args.path, args.theme,
|
generator = Generator(args.settings, args.path, args.theme,
|
||||||
args.output, markup)
|
args.output, markup)
|
||||||
clean_output_dir(args.output)
|
clean_output_dir(generator.output_path)
|
||||||
|
|
||||||
processors = [ArticlesProcessor, PagesProcessor, StaticProcessor]
|
processors = [ArticlesProcessor, PagesProcessor, StaticProcessor]
|
||||||
if generator.settings['PDF_PROCESSOR']:
|
if generator.settings['PDF_PROCESSOR']:
|
||||||
|
|
|
||||||
|
|
@ -26,6 +26,14 @@ class Generator(object):
|
||||||
self.output_path = os.path.realpath(output_path)
|
self.output_path = os.path.realpath(output_path)
|
||||||
self.markup = markup or self.settings['MARKUP']
|
self.markup = markup or self.settings['MARKUP']
|
||||||
|
|
||||||
|
if not os.path.exists(self.theme):
|
||||||
|
theme_path = os.sep.join([os.path.dirname(
|
||||||
|
os.path.abspath(__file__)), "themes/%s" % self.theme])
|
||||||
|
if os.path.exists(theme_path):
|
||||||
|
self.theme = theme_path
|
||||||
|
else:
|
||||||
|
raise Exception("Impossible to find the theme %s" % self.theme)
|
||||||
|
|
||||||
if 'SITEURL' not in self.settings:
|
if 'SITEURL' not in self.settings:
|
||||||
self.settings['SITEURL'] = self.output_path
|
self.settings['SITEURL'] = self.output_path
|
||||||
|
|
||||||
|
|
@ -102,10 +110,7 @@ class Generator(object):
|
||||||
print u' [ok] writing %s' % filename
|
print u' [ok] writing %s' % filename
|
||||||
|
|
||||||
def get_templates(self):
|
def get_templates(self):
|
||||||
"""Return the templates to use.
|
"""Return the templates to use."""
|
||||||
|
|
||||||
:param path: the path to load the templates from
|
|
||||||
"""
|
|
||||||
path = os.path.expanduser(os.path.join(self.theme, 'templates'))
|
path = os.path.expanduser(os.path.join(self.theme, 'templates'))
|
||||||
env = Environment(loader=FileSystemLoader(path))
|
env = Environment(loader=FileSystemLoader(path))
|
||||||
templates = {}
|
templates = {}
|
||||||
|
|
|
||||||
404
pelican/themes/martyalchin/css/style.css
Normal file
404
pelican/themes/martyalchin/css/style.css
Normal file
|
|
@ -0,0 +1,404 @@
|
||||||
|
/* Resets to avoid browser differences */
|
||||||
|
|
||||||
|
body, button, div, fieldset, form, h1, h2, h3, input, label, li, p, pre, td, textarea, .typygmentdown {
|
||||||
|
margin: 0;
|
||||||
|
padding: 0;
|
||||||
|
text-align: justify;
|
||||||
|
font-family: Georgia, serif;
|
||||||
|
font-size: 100%;
|
||||||
|
line-height: 1.25;
|
||||||
|
letter-spacing: 0;
|
||||||
|
border: none;
|
||||||
|
background: none;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Overall page layout */
|
||||||
|
|
||||||
|
body {
|
||||||
|
background: white;
|
||||||
|
color: black;
|
||||||
|
color: #303030;
|
||||||
|
}
|
||||||
|
|
||||||
|
@media screen {
|
||||||
|
body {
|
||||||
|
width: 700px;
|
||||||
|
margin: 20px auto;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@media print {
|
||||||
|
body {
|
||||||
|
margin: 0 2em;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Headings */
|
||||||
|
|
||||||
|
h1, h2, h3, h4, h5, h6, .info, .info p {
|
||||||
|
font-family: Times, serif;
|
||||||
|
font-weight: normal;
|
||||||
|
page-break-inside: avoid;
|
||||||
|
}
|
||||||
|
|
||||||
|
h1 .caps, h2 .caps, h3 .caps {
|
||||||
|
letter-spacing: -.05em;
|
||||||
|
}
|
||||||
|
|
||||||
|
h1 {
|
||||||
|
font-family: Times, serif;
|
||||||
|
text-align: center;
|
||||||
|
font-size: 2.25em;
|
||||||
|
line-height: 1.111;
|
||||||
|
padding-right: 0.08em;
|
||||||
|
letter-spacing: -.07em;
|
||||||
|
}
|
||||||
|
|
||||||
|
h2 {
|
||||||
|
margin-top: 0.714em;
|
||||||
|
font-size: 1.75em;
|
||||||
|
line-height: 0.714;
|
||||||
|
letter-spacing: -.05em;
|
||||||
|
}
|
||||||
|
|
||||||
|
h3 {
|
||||||
|
margin-top: 0.926em;
|
||||||
|
font-size: 1.35em;
|
||||||
|
line-height: 0.926;
|
||||||
|
letter-spacing: -.03em;
|
||||||
|
}
|
||||||
|
|
||||||
|
h1 .dquo, h2 .dquo, h3 .dquo, h4 .dquo, h5 .dquo, h6 .dquo {
|
||||||
|
margin-left: -.4em;
|
||||||
|
}
|
||||||
|
|
||||||
|
.info, .info p {
|
||||||
|
text-align: center;
|
||||||
|
letter-spacing: -.03em;
|
||||||
|
}
|
||||||
|
|
||||||
|
.info p {
|
||||||
|
margin: 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
.info img.g {
|
||||||
|
width: 24px;
|
||||||
|
height: 24px;
|
||||||
|
margin: -7px 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
#home h2 a[href*="http://"] {
|
||||||
|
padding-right: 28px;
|
||||||
|
background: url("/static/link.png") right center no-repeat;
|
||||||
|
}
|
||||||
|
|
||||||
|
#home h2 a[href*="http://"]:visited {
|
||||||
|
padding-right: 28px;
|
||||||
|
background: url("/static/visited.png") right center no-repeat;
|
||||||
|
}
|
||||||
|
|
||||||
|
h2 + p.published {
|
||||||
|
float: right;
|
||||||
|
margin-top: -1.25em;
|
||||||
|
}
|
||||||
|
|
||||||
|
.copyright {
|
||||||
|
margin: 1.25em 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Page text */
|
||||||
|
|
||||||
|
p, p[class] + p {
|
||||||
|
margin-top: 1.25em;
|
||||||
|
widows: 2;
|
||||||
|
orphans: 2;
|
||||||
|
text-indent: 0;
|
||||||
|
clear: left;
|
||||||
|
}
|
||||||
|
|
||||||
|
p + p {
|
||||||
|
text-indent: 1.5em;
|
||||||
|
margin-top: 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
p ~ img {
|
||||||
|
display: block;
|
||||||
|
margin: 1.25em auto;
|
||||||
|
}
|
||||||
|
|
||||||
|
.caps {
|
||||||
|
letter-spacing: 0.1em;
|
||||||
|
font-size: 75%;
|
||||||
|
}
|
||||||
|
|
||||||
|
abbr {
|
||||||
|
border-bottom: 1px dotted black;
|
||||||
|
}
|
||||||
|
|
||||||
|
blockquote {
|
||||||
|
margin: 0 1em;
|
||||||
|
font-style: italic;
|
||||||
|
letter-spacing: -0.0625em;
|
||||||
|
}
|
||||||
|
|
||||||
|
blockquote em {
|
||||||
|
font-style: normal;
|
||||||
|
letter-spacing: 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
div.image {
|
||||||
|
text-align: center;
|
||||||
|
margin: 1.25em 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
img {
|
||||||
|
border: none;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
.side {
|
||||||
|
position: absolute;
|
||||||
|
width: 150px;
|
||||||
|
height: auto;
|
||||||
|
margin-left: 710px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.left.side {
|
||||||
|
margin-left: -160px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.right.side {
|
||||||
|
margin-left: 710px;
|
||||||
|
}
|
||||||
|
|
||||||
|
@media screen {
|
||||||
|
h1 a, h2 a, h3 a, .info a {
|
||||||
|
text-decoration: none;
|
||||||
|
}
|
||||||
|
|
||||||
|
a:link {
|
||||||
|
color: #85ac40;
|
||||||
|
}
|
||||||
|
|
||||||
|
a:visited {
|
||||||
|
color: #61883b;
|
||||||
|
}
|
||||||
|
|
||||||
|
::selection {
|
||||||
|
background: #dcff9d;
|
||||||
|
}
|
||||||
|
|
||||||
|
::-moz-selection {
|
||||||
|
background: #e2ffaf;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@media print {
|
||||||
|
a {
|
||||||
|
color: inherit;
|
||||||
|
text-decoration: none;
|
||||||
|
}
|
||||||
|
|
||||||
|
abbr {
|
||||||
|
border-bottom: none;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Lists */
|
||||||
|
|
||||||
|
ul, ol {
|
||||||
|
margin: 1.25em 0 1.25em -1.5em;
|
||||||
|
padding-left: 1.5em;
|
||||||
|
}
|
||||||
|
|
||||||
|
ul ul, ul ol, ol ol, ol ul {
|
||||||
|
margin: 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
ul li {
|
||||||
|
list-style: disc;
|
||||||
|
}
|
||||||
|
|
||||||
|
li p {
|
||||||
|
margin: 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Code */
|
||||||
|
|
||||||
|
pre {
|
||||||
|
margin-top: 1.47em;
|
||||||
|
font-family: Courier;
|
||||||
|
font-size: .85em;
|
||||||
|
line-height: 1.47;
|
||||||
|
overflow: visible;
|
||||||
|
}
|
||||||
|
|
||||||
|
code {
|
||||||
|
font-family: Courier;
|
||||||
|
font-size: .85em;
|
||||||
|
line-height: 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
.typygmentdown .c {
|
||||||
|
font-style: italic;
|
||||||
|
}
|
||||||
|
|
||||||
|
.typygmentdown .k, .typygmentdown .ow {
|
||||||
|
color: #404040;
|
||||||
|
}
|
||||||
|
|
||||||
|
.typygmentdown .c, .typygmentdown .sd {
|
||||||
|
color: #808080;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Comments */
|
||||||
|
|
||||||
|
#comment-list {
|
||||||
|
margin: 0;
|
||||||
|
padding: 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
#comment-list li {
|
||||||
|
padding-bottom: 1.25em;
|
||||||
|
}
|
||||||
|
|
||||||
|
#comment-list cite {
|
||||||
|
font-style: normal;
|
||||||
|
}
|
||||||
|
|
||||||
|
#comment-list cite + blockquote {
|
||||||
|
margin-top: 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
#comment-list blockquote {
|
||||||
|
margin: 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
#comment-list p {
|
||||||
|
margin-top: 1.25em;
|
||||||
|
text-indent: 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
#comment-form th {
|
||||||
|
width: 25%;
|
||||||
|
}
|
||||||
|
|
||||||
|
#comment-form input, #comment-form select, #comment-form textarea {
|
||||||
|
width: 100%;
|
||||||
|
}
|
||||||
|
|
||||||
|
@media print {
|
||||||
|
#comment-list, #comment-form {
|
||||||
|
display: none;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Friends */
|
||||||
|
|
||||||
|
#friends li {
|
||||||
|
list-style: none;
|
||||||
|
margin-left: 0;
|
||||||
|
padding-left: 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
#friends a[rel] {
|
||||||
|
margin-left: 20px;
|
||||||
|
}
|
||||||
|
|
||||||
|
#friends a[rel~="colleague"] {
|
||||||
|
background: url("/static/dj.png") left center no-repeat;
|
||||||
|
margin-left: 0;
|
||||||
|
padding-left: 20px;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Forms */
|
||||||
|
|
||||||
|
form, form p {
|
||||||
|
text-indent: 0;
|
||||||
|
text-align: left;
|
||||||
|
}
|
||||||
|
|
||||||
|
from th, form td {
|
||||||
|
margin: 0;
|
||||||
|
padding: 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
input, select, textarea {
|
||||||
|
background: white;
|
||||||
|
line-height: 1.5;
|
||||||
|
}
|
||||||
|
|
||||||
|
input[type="submit"], button {
|
||||||
|
border: 1px outset;
|
||||||
|
text-align: center;
|
||||||
|
background: #85ac40;
|
||||||
|
padding: .2em;
|
||||||
|
}
|
||||||
|
|
||||||
|
input[type="text"], textarea {
|
||||||
|
vertical-align: top;
|
||||||
|
border: 1px solid #e0e0e0;
|
||||||
|
}
|
||||||
|
|
||||||
|
input[type="text"], select {
|
||||||
|
width: 15em;
|
||||||
|
}
|
||||||
|
|
||||||
|
textarea {
|
||||||
|
width: 45em;
|
||||||
|
height: 7.5em;
|
||||||
|
overflow: auto;
|
||||||
|
}
|
||||||
|
|
||||||
|
#honeypot {
|
||||||
|
display: none;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Tables */
|
||||||
|
|
||||||
|
table {
|
||||||
|
border-collapse: collapse;
|
||||||
|
border: none;
|
||||||
|
margin: 1.25em auto;
|
||||||
|
}
|
||||||
|
|
||||||
|
caption {
|
||||||
|
border-bottom: 1px solid #303030;
|
||||||
|
}
|
||||||
|
|
||||||
|
thead th {
|
||||||
|
border-bottom: 1px solid #303030;
|
||||||
|
}
|
||||||
|
|
||||||
|
tfoot th,
|
||||||
|
tfoot td {
|
||||||
|
border-top: 1px solid #303030;
|
||||||
|
}
|
||||||
|
|
||||||
|
th[scope="row"],
|
||||||
|
th[scope="col"] {
|
||||||
|
text-align: left;
|
||||||
|
}
|
||||||
|
|
||||||
|
tbody + tbody th, tbody + tbody td {
|
||||||
|
border-top: 1px solid #d0d0d0;
|
||||||
|
}
|
||||||
|
|
||||||
|
tbody + tbody tr + tr th,
|
||||||
|
tbody + tbody tr + tr td,
|
||||||
|
tfoot tr + tr th,
|
||||||
|
tfoot tr + tr td {
|
||||||
|
border-top: none;
|
||||||
|
}
|
||||||
|
|
||||||
|
th, td {
|
||||||
|
padding: 0 0.5em;
|
||||||
|
font-weight: normal;
|
||||||
|
vertical-align: top;
|
||||||
|
}
|
||||||
|
|
||||||
|
table.numeric td, table.numeric th[scope="col"] {
|
||||||
|
text-align: right;
|
||||||
|
}
|
||||||
|
|
||||||
0
pelican/themes/martyalchin/templates/archives.html
Normal file
0
pelican/themes/martyalchin/templates/archives.html
Normal file
13
pelican/themes/martyalchin/templates/article.html
Normal file
13
pelican/themes/martyalchin/templates/article.html
Normal file
|
|
@ -0,0 +1,13 @@
|
||||||
|
{% extends "base.html" %}
|
||||||
|
{% block title %}{{ article.title }}{%endblock%}
|
||||||
|
{% block content %}
|
||||||
|
<h1>{{ article.title }}</h1>
|
||||||
|
<div class="info">
|
||||||
|
{% if article.author %}
|
||||||
|
By <a class="url fn" href="#">{{ article.author }}</a>
|
||||||
|
{% endif %}
|
||||||
|
on <a>{{ article.date.strftime('%a %d %B %Y') }}</a>
|
||||||
|
about <a href="{{ SITEURL }}/category/{{ article.category }}.html">{{ article.category }}</a>
|
||||||
|
</div>
|
||||||
|
{{ article.content }}
|
||||||
|
{% endblock %}
|
||||||
15
pelican/themes/martyalchin/templates/base.html
Normal file
15
pelican/themes/martyalchin/templates/base.html
Normal file
|
|
@ -0,0 +1,15 @@
|
||||||
|
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
|
||||||
|
<html>
|
||||||
|
<head>
|
||||||
|
<title>{% block title %}{{ SITENAME }}{%endblock%}</title>
|
||||||
|
<meta charset="utf-8" />
|
||||||
|
<link rel="stylesheet" href="{{ SITEURL }}/css/style.css" type="text/css" />
|
||||||
|
<link href="{{ SITEURL }}/feeds/all.atom.xml" type="application/atom+xml" rel="alternate" title="{{ SITENAME }} ATOM Feed" />
|
||||||
|
</head>
|
||||||
|
<body>
|
||||||
|
{% block content %} {% endblock %}
|
||||||
|
|
||||||
|
<div class="copyright info vcard">Design by <a class="fn url"
|
||||||
|
href="http://martyalchin.com">Marty Alchin</a>, <a rel="license" href="http://creativecommons.org/licenses/by-sa/3.0/us/">some rights reserved</a>. Powered by <a href="http://alexis.notomyidea.org/pelican/">pelican</a></div>
|
||||||
|
</body>
|
||||||
|
</html>
|
||||||
0
pelican/themes/martyalchin/templates/categories.html
Normal file
0
pelican/themes/martyalchin/templates/categories.html
Normal file
9
pelican/themes/martyalchin/templates/category.html
Normal file
9
pelican/themes/martyalchin/templates/category.html
Normal file
|
|
@ -0,0 +1,9 @@
|
||||||
|
{% extends "base.html" %}
|
||||||
|
{% block title %}{{ category }}{%endblock%}
|
||||||
|
<h1>{{ category }}</h1>
|
||||||
|
<div class="info"></div>
|
||||||
|
{% for article in articles %}
|
||||||
|
<h2><a href="{{ SITEURL }}/{{ article.url }}">{{ article.title }}</a></h2>
|
||||||
|
<p class="published">{{ article.date.strftime('%a %d %B %Y') }}</p>
|
||||||
|
{{ article.summary }}
|
||||||
|
{% endfor %}
|
||||||
10
pelican/themes/martyalchin/templates/index.html
Normal file
10
pelican/themes/martyalchin/templates/index.html
Normal file
|
|
@ -0,0 +1,10 @@
|
||||||
|
{% extends "base.html" %}
|
||||||
|
{% block content %}
|
||||||
|
<h1><a href="{{ SITEURL }}">{{ SITENAME }}</a></h1>
|
||||||
|
{% if SITESUBTITLE %} <div class="info">{{ SITESUBTITLE }}</div> {% endif %}
|
||||||
|
{% for article in articles %}
|
||||||
|
<h2><a href="{{ SITEURL }}/{{ article.url }}">{{ article.title }}</a></h2>
|
||||||
|
<p class="published">{{ article.date.strftime('%a %d %B %Y') }}</p>
|
||||||
|
{{ article.summary }}
|
||||||
|
{% endfor %}
|
||||||
|
{% endblock %}
|
||||||
7
pelican/themes/martyalchin/templates/page.html
Normal file
7
pelican/themes/martyalchin/templates/page.html
Normal file
|
|
@ -0,0 +1,7 @@
|
||||||
|
{% extends "base.html" %}
|
||||||
|
{% block title %}{{ page.title }}{%endblock%}
|
||||||
|
{% block content %}
|
||||||
|
<h1>{{ page.title }}</h1>
|
||||||
|
{{ page.content }}
|
||||||
|
{% endblock %}
|
||||||
|
|
||||||
0
pelican/themes/martyalchin/templates/tag.html
Normal file
0
pelican/themes/martyalchin/templates/tag.html
Normal file
0
pelican/themes/martyalchin/templates/tags.html
Normal file
0
pelican/themes/martyalchin/templates/tags.html
Normal file
Loading…
Add table
Add a link
Reference in a new issue