Add new theme: Gum

This commit is contained in:
Nick Rance
2013-05-31 04:37:59 +01:00
committed by Justin Mayer
parent 458f7fb640
commit 28e4ad3299
29 changed files with 7970 additions and 0 deletions

7
gum/LICENSE Normal file
View File

@@ -0,0 +1,7 @@
MIT Open Source License
Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.

40
gum/README.md Normal file
View File

@@ -0,0 +1,40 @@
### What is Gum?
Gum is a clean and responsive theme for [Pelican](https://github.com/getpelican/pelican), based on the [Gumby Framework](http://gumbyframework.com/docs).
### Requirements
* [Pelican](https://github.com/getpelican/pelican)
### Configuration
* Edit your settings file to include the following if desired (any values left blank won't show up in the theme):
```
GITHUB_URL = ''
TWITTER_URL = ''
FACEBOOK_URL = ''
GOOGLEPLUS_URL = ''
```
This theme uses the latest Google Analytics code, which will be included when the following values are filled out appropriately.
```
GOOGLE_ANALYTICS_ID = ''
GOOGLE_ANALYTICS_SITENAME = ''
```
### Credits / Thanks
* Alexis Metaireau / Pelican
* Digital Surgeons / Gumby Framework
* Twitter Bootstrap
* traeblain for his [makefile](https://gist.github.com/traeblain/4252511) gist for building Pelican on Windows
**MIT Open Source License**
Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.

BIN
gum/screenshot.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 135 KiB

Binary file not shown.

Binary file not shown.

Binary file not shown.

7097
gum/static/gumby.css Normal file

File diff suppressed because it is too large Load Diff

View File

@@ -0,0 +1,27 @@
/**
* Gumby Init
*/
// test for touch event support
Modernizr.load({
test: Modernizr.touch,
// if present load custom jQuery mobile build and update Gumby.click
yep: 'js/libs/jquery.mobile.custom.min.js',
callback: function(url, result, key) {
// check jQuery mobile has successfully loaded before using tap events
if($.mobile) {
window.Gumby.click = 'tap';
}
},
// either way initialize Gumby
complete: function() {
window.Gumby.init();
// if AMD return Gumby object to define
if(typeof define == "function" && define.amd) {
define(window.Gumby);
}
}
});

145
gum/static/js/libs/gumby.js Normal file
View File

@@ -0,0 +1,145 @@
/**
* Gumby Framework
* ---------------
*
* Follow @gumbycss on twitter and spread the love.
* We worked super hard on making this awesome and released it to the web.
* All we ask is you leave this intact. #gumbyisawesome
*
* Gumby Framework
* http://gumbyframework.com
*
* Built with love by your friends @digitalsurgeons
* http://www.digitalsurgeons.com
*
* Free to use under the MIT license.
* http://www.opensource.org/licenses/mit-license.php
*/
!function() {
'use strict';
function Gumby() {
this.$dom = $(document);
this.isOldie = !!this.$dom.find('html').hasClass('oldie');
this.click = 'click';
this.onReady = this.onOldie = this.onTouch = false;
this.uiModules = {};
this.inits = {};
}
// initialize Gumby
Gumby.prototype.init = function() {
// init UI modules
this.initUIModules();
var scope = this;
// call ready() code when dom is ready
this.$dom.ready(function() {
if(scope.onReady) {
scope.onReady();
}
// call oldie() callback if applicable
if(scope.isOldie && scope.onOldie) {
scope.onOldie();
}
// call touch() callback if applicable
if(Modernizr.touch && scope.onTouch) {
scope.onTouch();
}
});
};
// public helper - set Gumby ready callback
Gumby.prototype.ready = function(code) {
if(code && typeof code === 'function') {
this.onReady = code;
}
};
// public helper - set oldie callback
Gumby.prototype.oldie = function(code) {
if(code && typeof code === 'function') {
this.onOldie = code;
}
};
// public helper - set touch callback
Gumby.prototype.touch = function(code) {
if(code && typeof code === 'function') {
this.onTouch = code;
}
};
// public helper - return debuggin object including uiModules object
Gumby.prototype.debug = function() {
return {
$dom: this.$dom,
isOldie: this.isOldie,
uiModules: this.uiModules,
click: this.click
};
};
// grab attribute value, testing data- gumby- and no prefix
Gumby.prototype.selectAttr = function() {
var i = 0;
// any number of attributes can be passed
for(; i < arguments.length; i++) {
// various formats
var attr = arguments[i],
dataAttr = 'data-'+arguments[i],
gumbyAttr = 'gumby-'+arguments[i];
// first test for data-attr
if(this.attr(dataAttr)) {
return this.attr(dataAttr);
// next test for gumby-attr
} else if(this.attr(gumbyAttr)) {
return this.attr(gumbyAttr);
// finally no prefix
} else if(this.attr(attr)) {
return this.attr(attr);
}
}
// none found
return false;
};
// add an initialisation method
Gumby.prototype.addInitalisation = function(ref, code) {
this.inits[ref] = code;
};
// initialize a uiModule
Gumby.prototype.initialize = function(ref) {
if(this.inits[ref] && typeof this.inits[ref] === 'function') {
this.inits[ref]();
}
};
// store a UI module
Gumby.prototype.UIModule = function(data) {
var module = data.module;
this.uiModules[module] = data;
};
// loop round and init all UI modules
Gumby.prototype.initUIModules = function() {
var x;
for(x in this.uiModules) {
this.uiModules[x].init();
}
};
window.Gumby = new Gumby();
}();

1
gum/static/js/libs/gumby.min.js vendored Normal file

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View File

@@ -0,0 +1,69 @@
/**
* Gumby Navbar
*/
!function() {
'use strict';
// define module class and init only if we're on touch devices
if(!Modernizr.touch) {
return;
}
function Navbar($el) {
this.$el = $el;
var scope = this;
// when navbar items are tapped hide/show dropdowns
this.$el.find('li').on(Gumby.click, function(e) {
var $this = $(this);
e.stopPropagation();
// prevent jump to top of page
if(this.href === '#') {
e.preventDefault();
}
scope.dropdown($this);
});
}
// hide/show dropdowns
Navbar.prototype.dropdown = function($this) {
// we have dropdowns so open/cose
if($this.children('.dropdown').length) {
if($this.hasClass('active')) {
$this.removeClass('active');
} else {
$this.addClass('active');
}
// no dropdown so close others
} else {
this.$items.removeClass('active');
}
};
// add initialisation
Gumby.addInitalisation('navbars', function() {
$('.navbar').each(function() {
var $this = $(this);
// this element has already been initialized
if($this.data('isNavbar')) {
return true;
}
// mark element as initialized
$this.data('isNavbar', true);
new Navbar($this);
});
});
// register UI module
Gumby.UIModule({
module: 'navbar',
events: [],
init: function() {
Gumby.initialize('navbars');
}
});
}();

8
gum/static/js/plugins.js Normal file
View File

@@ -0,0 +1,8 @@
window.log=function(){log.history=log.history||[];log.history.push(arguments);if(this.console){arguments.callee=arguments.callee.caller;var a=[].slice.call(arguments);(typeof console.log==="object"?log.apply.call(console.log,console,a):console.log.apply(console,a))}};
(function(b){function c(){}for(var d="assert,count,debug,dir,dirxml,error,exception,group,groupCollapsed,groupEnd,info,log,timeStamp,profile,profileEnd,time,timeEnd,trace,warn".split(","),a;a=d.pop();){b[a]=b[a]||c}})((function(){try
{console.log();return window.console;}catch(err){return window.console={};}})());
/*! http://mths.be/placeholder v2.0.7 by @mathias */
;(function(f,h,$){var a='placeholder' in h.createElement('input'),d='placeholder' in h.createElement('textarea'),i=$.fn,c=$.valHooks,k,j;if(a&&d){j=i.placeholder=function(){return this};j.input=j.textarea=true}else{j=i.placeholder=function(){var l=this;l.filter((a?'textarea':':input')+'[placeholder]').not('.placeholder').bind({'focus.placeholder':b,'blur.placeholder':e}).data('placeholder-enabled',true).trigger('blur.placeholder');return l};j.input=a;j.textarea=d;k={get:function(m){var l=$(m);return l.data('placeholder-enabled')&&l.hasClass('placeholder')?'':m.value},set:function(m,n){var l=$(m);if(!l.data('placeholder-enabled')){return m.value=n}if(n==''){m.value=n;if(m!=h.activeElement){e.call(m)}}else{if(l.hasClass('placeholder')){b.call(m,true,n)||(m.value=n)}else{m.value=n}}return l}};a||(c.input=k);d||(c.textarea=k);$(function(){$(h).delegate('form','submit.placeholder',function(){var l=$('.placeholder',this).each(b);setTimeout(function(){l.each(e)},10)})});$(f).bind('beforeunload.placeholder',function(){$('.placeholder').each(function(){this.value=''})})}function g(m){var l={},n=/^jQuery\d+$/;$.each(m.attributes,function(p,o){if(o.specified&&!n.test(o.name)){l[o.name]=o.value}});return l}function b(m,n){var l=this,o=$(l);if(l.value==o.attr('placeholder')&&o.hasClass('placeholder')){if(o.data('placeholder-password')){o=o.hide().next().show().attr('id',o.removeAttr('id').data('placeholder-id'));if(m===true){return o[0].value=n}o.focus()}else{l.value='';o.removeClass('placeholder');l==h.activeElement&&l.select()}}}function e(){var q,l=this,p=$(l),m=p,o=this.id;if(l.value==''){if(l.type=='password'){if(!p.data('placeholder-textinput')){try{q=p.clone().attr({type:'text'})}catch(n){q=$('<input>').attr($.extend(g(this),{type:'text'}))}q.removeAttr('name').data({'placeholder-password':true,'placeholder-id':o}).bind('focus.placeholder',b);p.data({'placeholder-textinput':q,'placeholder-id':o}).before(q)}p=p.removeAttr('id').hide().prev().attr('id',o).show()}p.addClass('placeholder');p[0].value=p.attr('placeholder')}else{p.removeClass('placeholder')}}}(this,document,jQuery));
// place any jQuery/helper plugins in here, instead of separate, slower script files.

201
gum/static/style.css Normal file
View File

@@ -0,0 +1,201 @@
/*
Author : Nick Rance
- Credits
- Main CSS from Gumby framework
- Some CSS from Twitter Bootstrap - http://twitter.github.io/bootstrap/
*/
/* Code Highlighting */
code,
pre {
padding: 0 3px 2px;
font-family: Monaco, Menlo, Consolas, "Courier New", monospace;
font-size: 12px;
color: #333333;
-webkit-border-radius: 3px;
-moz-border-radius: 3px;
border-radius: 3px;
}
code {
padding: 2px 4px;
color: #d14;
white-space: nowrap;
background-color: #f7f7f9;
border: 1px solid #e1e1e8;
}
pre {
display: block;
padding: 9.5px;
margin: 0 0 10px;
font-size: 13px;
line-height: 20px;
word-break: break-all;
word-wrap: break-word;
white-space: pre;
white-space: pre-wrap;
background-color: #f5f5f5;
border: 1px solid #ccc;
border: 1px solid rgba(0, 0, 0, 0.15);
-webkit-border-radius: 4px;
-moz-border-radius: 4px;
border-radius: 4px;
}
pre.prettyprint {
margin-bottom: 20px;
}
pre code {
padding: 0;
color: inherit;
white-space: pre;
white-space: pre-wrap;
background-color: transparent;
border: 0;
}
.pre-scrollable {
max-height: 340px;
overflow-y: scroll;
}
/* Table
--------------------------------------------------------- */
table {
max-width: 100%;
background-color: transparent;
border-collapse: collapse;
border-spacing: 0;
}
.table {
width: 100%;
margin-bottom: 20px;
}
.table th,
.table td {
padding: 8px;
line-height: 20px;
text-align: left;
vertical-align: top;
border-top: 1px solid #dddddd;
}
.table th {
font-weight: bold;
}
.table thead th {
vertical-align: bottom;
}
.table caption + thead tr:first-child th,
.table caption + thead tr:first-child td,
.table colgroup + thead tr:first-child th,
.table colgroup + thead tr:first-child td,
.table thead:first-child tr:first-child th,
.table thead:first-child tr:first-child td {
border-top: 0;
}
.table tbody + tbody {
border-top: 2px solid #dddddd;
}
.table .table {
background-color: #ffffff;
}
.table-condensed th,
.table-condensed td {
padding: 4px 5px;
}
.table-bordered {
border: 1px solid #dddddd;
border-collapse: separate;
*border-collapse: collapse;
border-left: 0;
-webkit-border-radius: 4px;
-moz-border-radius: 4px;
border-radius: 4px;
}
.table-striped tbody > tr:nth-child(odd) > td,
.table-striped tbody > tr:nth-child(odd) > th {
background-color: #f9f9f9;
}
.table-hover tbody tr:hover > td,
.table-hover tbody tr:hover > th {
background-color: #f5f5f5;
}
table td[class*="span"],
table th[class*="span"],
.row-fluid table td[class*="span"],
.row-fluid table th[class*="span"] {
display: table-cell;
float: none;
margin-left: 0;
}
/* Navigation
--------------------------------------------------------- */
#banner strong {display:block;}
#banner h1 { font-size:3.25rem }
.no-touch .navbar ul li.active > a {
background: #868d92;
}
/* Posts
--------------------------------------------------------- */
#post-list { margin-left:0; }
#post-list > li {list-style:none; border-bottom: 2px solid #ccc; margin-bottom: 20px; padding-bottom: 15px;}
.tag-row {margin-top:20px;}
address { font-size:14px; margin-bottom:10px;}
/* Typography
--------------------------------------------------------- */
h1 a, h2 a, h3 a, h4 a, h5 a, h6 a {
color: #3498DB;
}
a, a:hover { color: #3498DB; }
a:focus { color: #34495E; }
.btn a:hover,
.btn a:focus {color:#eee; }
.label:hover,
.label:focus {color:#eee; }
/* Footer
--------------------------------------------------------- */
.bg { background:#eee; margin-top:35px; padding-top:25px; border-top:5px solid #3498DB; }
/* Responsive fixes
--------------------------------------------------------- */
@media only screen and (max-width: 600px) {
#banner h1 a {font-size:22px!important; line-height:24px;}
}

View File

@@ -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 %}

View File

@@ -0,0 +1,38 @@
{% extends "base.html" %}
{% block content %}
<section id="content" class="body">
<div class="row">
<div class="eleven columns">
<header>
<h2 class="entry-title">
<a href="{{ SITEURL }}/{{ article.url }}" rel="bookmark"
title="Permalink to {{ article.title|striptags }}">{{ article.title }}</a></h2>
{% import 'translations.html' as translations with context %}
{{ translations.translations_for(article) }}
</header>
<footer class="post-info">
<abbr class="published" title="{{ article.date.isoformat() }}">
{{ article.locale_date }}
</abbr>
{% if article.author %}
<address class="vcard author">
By <a class="url fn" href="{{ SITEURL }}/{{ article.author.url }}">{{ article.author }}</a>
</address>
{% endif %}
</footer><!-- /.post-info -->
<div class="entry-content">
{{ article.content }}
</div><!-- /.entry-content -->
</div><!-- /.eleven.columns -->
{% include 'sidebar.html' %}
</div><!-- /.row -->
</section>
{% endblock %}

View File

@@ -0,0 +1,7 @@
{% extends "index.html" %}
{% block title %}{{ SITENAME }} - Articles by {{ author }}{% endblock %}
{% block content_title %}
<h2>Articles by {{ author }}</h2>
{% endblock %}

153
gum/templates/base.html Normal file
View File

@@ -0,0 +1,153 @@
<!DOCTYPE html>
<html lang="{{ DEFAULT_LANG }}">
<head>
{% block head %}
<title>{% block title %}{{ SITENAME }}{% endblock title %}</title>
<meta charset="utf-8" />
{% 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 %}
<!-- Mobile viewport optimized: j.mp/bplateviewport -->
<meta name="viewport" content="width=device-width,initial-scale=1, maximum-scale=1">
<link rel="stylesheet" type="text/css" href="{{ SITEURL }}/theme/gumby.css" />
<link rel="stylesheet" type="text/css" href="{{ SITEURL }}/theme/style.css" />
<script src="{{ SITEURL }}/theme/js/libs/modernizr-2.6.2.min.js"></script>
{% if GOOGLE_ANALYTICS_ID %}
<script>
(function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
(i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
})(window,document,'script','//www.google-analytics.com/analytics.js','ga');
ga('create', '{{ GOOGLE_ANALYTICS_ID }}', '{{ GOOGLE_ANALYTICS_SITENAME }}');
ga('send', 'pageview');
</script>
{% endif %}
{% endblock head %}
</head>
<body id="index" class="home">
<div class="container">
<div class="row">
<header id="banner" class="body">
<h1><a href="{{ SITEURL }}">{{ SITENAME }} <strong>{{ SITESUBTITLE }}</strong></a></h1>
</header><!-- /#banner -->
<div id="navigation" class="navbar row">
<a href="#" gumby-trigger="#navigation &gt; ul" class="toggle"><i class="icon-menu"></i></a>
<ul class="columns">
<li><a href="{{ SITEURL }}">Home</a></li>
{% for title, link in MENUITEMS %}
<li><a href="{{ link }}">{{ title }}</a></li>
{% endfor %}
{% if DISPLAY_PAGES_ON_MENU %}
{% for p in PAGES %}
<li{% if p == page %} class="active"{% endif %}><a href="{{ SITEURL }}/{{ p.url }}">{{ p.title }}</a></li>
{% 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>
</div>
{% block content %}
{% endblock %}
</div><!-- /.row -->
</div><!-- /.container -->
<div class="container.nopad bg">
<footer id="credits" class="row">
<div class="seven columns left-center">
<address id="about" class="vcard body">
Proudly powered by <a href="http://getpelican.com/">Pelican</a>,
which takes great advantage of <a href="http://python.org">Python</a>.
<br />
Based on the <a target="_blank" href="http://gumbyframework.com">Gumby Framework</a>
</address>
</div>
<div class="seven columns">
<div class="row">
<ul class="socbtns">
{% if GITHUB_URL %}
<li><div class="btn primary"><a href="{{ GITHUB_URL }}" target="_blank">Github</a></div></li>
{% endif %}
{% if TWITTER_URL %}
<li><div class="btn twitter"><a href="{{ TWITTER_URL }}" target="_blank">Twitter</a></div></li>
{% endif %}
{% if FACEBOOK_URL %}
<li><div class="btn facebook"><a href="{{ FACEBOOK_URL }}" target="_blank">Facebook</a></div></li>
{% endif %}
{% if GOOGLEPLUS_URL %}
<li><div class="btn danger"><a href="{{ GOOGLEPLUS_URL }}" target="_blank">Google+</a></div></li>
{% endif %}
</ul>
</div>
</div>
</footer>
</div>
<script src="{{ SITEURL }}/theme/js/libs/jquery-1.9.1.min.js"></script>
<script src="{{ SITEURL }}/theme/js/libs/gumby.min.js"></script>
<script src="{{ SITEURL }}/theme/js/plugins.js"></script>
</body>
</html>

View File

@@ -0,0 +1,8 @@
{% extends "base.html" %}
{% block content %}
<ul>
{% for category, articles in categories %}
<li><a href="{{ SITEURL }}/{{ category.url }}">{{ category }}</a></li>
{% endfor %}
</ul>
{% endblock %}

View File

@@ -0,0 +1,5 @@
{% extends "index.html" %}
{% block content_title %}
<h2>Articles in the {{ category }} category</h2>
{% endblock %}

49
gum/templates/index.html Normal file
View File

@@ -0,0 +1,49 @@
{% extends "base.html" %}
{% block content %}
<section id="content">
{% block content_title %}
{% endblock %}
<div class="row">
<div class="eleven columns">
<ol id="post-list">
{% for article in articles_page.object_list %}
<li><article class="hentry">
<header> <h2 class="entry-title"><a href="{{ SITEURL }}/{{ article.url }}" rel="bookmark" title="Permalink to {{ article.title|striptags }}">{{ article.title }}</a></h2> </header>
<footer class="post-info">
<abbr class="published" title="{{ article.date.isoformat() }}"> {{ article.locale_date }} </abbr>
{% if article.author %}<address class="vcard author">By <a class="url fn" href="{{ SITEURL }}/{{ article.author.url }}">{{ article.author }}</a></address>{% endif %}
</footer><!-- /.post-info -->
<div class="entry-content"> {{ article.summary }} </div><!-- /.entry-content -->
<div class="medium primary btn"><a href="{{ SITEURL }}/{{ article.url }}" rel="bookmark" title="Permalink to {{ article.title|striptags }}">Read more <i class="icon-arrow-right"></i></a></div>
<div class="row tag-row">
{% if article.tags %}
<span>Tagged as : </span>
{% for tag in article.tags %}
<a class="danger label" href="{{ SITEURL }}/{{ tag.url }}">{{ tag }}</a>
{% endfor %}
{% endif %}
</div>
</article></li>
{% endfor %}
</ol><!-- /#posts-list -->
</div><!-- /.eleven.columns -->
{% include 'sidebar.html' %}
</div><!-- /.row -->
{% include 'pagination.html' %}
</section><!-- /#content -->
{% endblock content %}

9
gum/templates/page.html Normal file
View File

@@ -0,0 +1,9 @@
{% extends "base.html" %}
{% block title %}{{ page.title }}{%endblock%}
{% block content %}
<h1>{{ page.title }}</h1>
{% import 'translations.html' as translations with context %}
{{ translations.translations_for(page) }}
{{ page.content }}
{% endblock %}

View File

@@ -0,0 +1,15 @@
{% if DEFAULT_PAGINATION %}
<p class="paginator">
{% if articles_page.has_previous() %}
{% if articles_page.previous_page_number() == 1 %}
<a href="{{ SITEURL }}/{{ page_name }}.html"><i class="icon-arrow-left"></i></a>
{% else %}
<a href="{{ SITEURL }}/{{ page_name }}{{ articles_page.previous_page_number() }}.html"><i class="icon-arrow-left"></i></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"><i class="icon-arrow-right"></i></a>
{% endif %}
</p>
{% endif %}

View File

@@ -0,0 +1,53 @@
<div class="three columns">
<h4>Pages</h4>
<ul>
{% for title, link in MENUITEMS %}
<li><a href="{{ link }}">{{ title }}</a></li>
{% endfor %}
{% if DISPLAY_PAGES_ON_MENU %}
{% for p in PAGES %}
<li{% if p == page %} class="active"{% endif %}><a href="{{ SITEURL }}/{{ p.url }}">{{ p.title }}</a></li>
{% 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>
<h4>Categories</h4>
{% if categories %}
<ul>
{% for cat, null in categories %}
<li><a href="{{ SITEURL }}/{{ cat.url|e }}">{{ cat }}</a></li>
{% endfor %}
</ul>
{% endif %}
<h4>Tags</h4>
{% if tags %}
<ul>
{% for tag in tag_cloud %}
<li class="tag-{{ tag.1 }}"><a href="{{ SITEURL }}/tag/{{ tag.0|string|replace(" ", "-" )|lower }}.html">{{ tag.0 }}</a></li>
{% endfor %}
</ul>
{% endif %}
{% if SOCIAL %}
<nav class="widget">
<h4>Social</h4>
<ul>
{% for url, name in SOCIAL %}
<li><a href="{{ url|e }}">{{ name }}</a></li>
{% endfor %}
</ul>
</nav>
{% endif %}
</div>

2
gum/templates/tag.html Normal file
View File

@@ -0,0 +1,2 @@
{% extends "index.html" %}
{% block title %}{{ SITENAME }} - {{ tag }}{% endblock %}

13
gum/templates/tags.html Normal file
View File

@@ -0,0 +1,13 @@
{% extends "base.html" %}
{% block content %}
<ul>
<li class="nav-header"><h4><i class="icon-tags icon-large"></i>Tags</h4></li>
{% for tag in tag_cloud %}
<li class="tag-{{ tag.1 }}">
<a href="{{ SITEURL }}/{{ tag.0.url }}">
<i class="icon-tag icon-large"></i>{{ tag.0 }}
</a>
</li>
{% endfor %}
</ul>
{% endblock %}

BIN
gum/typography.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 93 KiB