Feel free to suggest better layout, etc..main
@@ -0,0 +1,3 @@ | |||||
.hyde_deps | |||||
deploy | |||||
*.pyc |
@@ -0,0 +1,4 @@ | |||||
BaySec Website Source | |||||
===================== | |||||
Source to build the BaySec website. |
@@ -0,0 +1,5 @@ | |||||
=== | |||||
title: BaySec Event feed | |||||
extends: atom.j2 | |||||
listable: false | |||||
=== |
@@ -0,0 +1,15 @@ | |||||
BEGIN:VCALENDAR | |||||
METHOD:PUBLISH | |||||
VERSION:2.0 | |||||
PRODID:-//BaySec Creations//Hyde Jinja2 Templates 0.1//EN | |||||
{% for post in resource.node.walk_resources_sorted_by_time() %} | |||||
{% if post.meta.event_summary %} | |||||
BEGIN:VEVENT | |||||
SUMMARY:{{ post.meta.event_summary }} | |||||
LOCATION:{{ post.meta.event_location }} | |||||
DTSTART{% if post.meta.event_timezone %};TZID={{ post.meta.event_timezone }}{% endif %}:{{ post.meta.event_start }} | |||||
DTEND{% if post.meta.event_timezone %};TZID={{ post.meta.event_timezone }}{% endif %}:{{ post.meta.event_end }} | |||||
END:VEVENT | |||||
{% endif %} | |||||
{% endfor %} | |||||
END:VCALENDAR |
@@ -0,0 +1,11 @@ | |||||
--- | |||||
title: BaySec | |||||
description: SF Bay Area Security Professionals Meetup | |||||
extends: listing.j2 | |||||
default_block: test | |||||
listable: false | |||||
--- | |||||
{% block page_title %} | |||||
BaySec is a meetup for security professionals that happens the third Tuesday of each month. | |||||
An <a href="/calendar.ics">ICS calendar</a> is available. | |||||
{% endblock %} |
@@ -0,0 +1,468 @@ | |||||
* { | |||||
vertical-align: baseline; | |||||
font-weight: inherit; | |||||
font-family: inherit; | |||||
font-style: inherit; | |||||
text-decoration:inherit; | |||||
font-size: 100%; | |||||
padding: 0; | |||||
border: 0; | |||||
margin: 0; | |||||
} | |||||
article,aside,details,figcaption,figure, | |||||
footer,header,hgroup,menu,nav,section { | |||||
display:block; | |||||
} | |||||
table { | |||||
border-collapse: collapse; | |||||
} | |||||
:focus { | |||||
outline: 0; | |||||
} | |||||
::-moz-focus-inner { | |||||
border: 0; | |||||
} | |||||
.clear { | |||||
clear: both; | |||||
} | |||||
/* clearfix */ | |||||
.clearfix:after { | |||||
content: "."; | |||||
display: block; | |||||
clear: both; | |||||
visibility: hidden; | |||||
line-height: 0; | |||||
height: 0; | |||||
} | |||||
.clearfix { | |||||
display: block; | |||||
} | |||||
* html .clearfix { | |||||
height: 1%; | |||||
} | |||||
a { | |||||
color: #37e; | |||||
text-decoration: underline; | |||||
} | |||||
a:hover{ | |||||
color: #222; | |||||
} | |||||
body{ | |||||
font-family: "Helvetica Neue", Helvetica, Arial, sans-serif; | |||||
background-color: #efefef; | |||||
padding: 0; | |||||
margin: 0; | |||||
} | |||||
#container{ | |||||
background-color: #eaeaea; | |||||
width: 640px; | |||||
margin: 0 auto; | |||||
padding: 12px; | |||||
-moz-box-shadow: 0px 4px 12px #ccc; /* FF3.5+ */ | |||||
-webkit-box-shadow: 0px 4px 12px #ccc; /* Saf3.0+, Chrome */ | |||||
box-shadow: 0px 4px 12px #ccc; /* Opera 10.5, IE 9.0 */ | |||||
filter: progid:DXImageTransform.Microsoft.dropshadow(OffX=12px, OffY=12px, Color='#ccc'); /* IE6,IE7 */ | |||||
-ms-filter: "progid:DXImageTransform.Microsoft.dropshadow(OffX=12px, OffY=12px, Color='#ccc')"; /* IE8 */ | |||||
} | |||||
footer{ | |||||
font-size: 10px; | |||||
text-align: center; | |||||
margin-top: 24px; | |||||
} | |||||
/* Button styles from the awesome: http://www.webdesignerwall.com/demo/css-buttons.html */ | |||||
.button { | |||||
display: inline-block; | |||||
zoom: 1; /* zoom and *display = ie7 hack for display:inline-block */ | |||||
*display: inline; | |||||
vertical-align: baseline; | |||||
margin: 0 2px; | |||||
outline: none; | |||||
cursor: pointer; | |||||
text-align: center; | |||||
text-decoration: none; | |||||
font: 14px/100% Arial, Helvetica, sans-serif; | |||||
padding: .5em 2em .55em; | |||||
text-shadow: 0 1px 1px rgba(0,0,0,.3); | |||||
-webkit-border-radius: .5em; | |||||
-moz-border-radius: .5em; | |||||
border-radius: .5em; | |||||
-webkit-box-shadow: 0 1px 2px rgba(0,0,0,.2); | |||||
-moz-box-shadow: 0 1px 2px rgba(0,0,0,.2); | |||||
box-shadow: 0 1px 2px rgba(0,0,0,.2); | |||||
} | |||||
.button:hover { | |||||
text-decoration: none; | |||||
} | |||||
.button:active { | |||||
position: relative; | |||||
top: 1px; | |||||
} | |||||
.bigrounded { | |||||
-webkit-border-radius: 2em; | |||||
-moz-border-radius: 2em; | |||||
border-radius: 2em; | |||||
} | |||||
.medium { | |||||
font-size: 12px; | |||||
padding: .4em 1.5em .42em; | |||||
} | |||||
.small { | |||||
font-size: 11px; | |||||
padding: .2em 1em .275em; | |||||
} | |||||
/* white */ | |||||
.white { | |||||
color: #606060; | |||||
border: solid 1px #b7b7b7; | |||||
background: #fff; | |||||
background: -webkit-gradient(linear, left top, left bottom, from(#fff), to(#ededed)); | |||||
background: -moz-linear-gradient(top, #fff, #ededed); | |||||
filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffffff', endColorstr='#ededed'); | |||||
} | |||||
.white:hover { | |||||
background: #ededed; | |||||
background: -webkit-gradient(linear, left top, left bottom, from(#fff), to(#dcdcdc)); | |||||
background: -moz-linear-gradient(top, #fff, #dcdcdc); | |||||
filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffffff', endColorstr='#dcdcdc'); | |||||
} | |||||
.white:active { | |||||
color: #999; | |||||
background: -webkit-gradient(linear, left top, left bottom, from(#ededed), to(#fff)); | |||||
background: -moz-linear-gradient(top, #ededed, #fff); | |||||
filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ededed', endColorstr='#ffffff'); | |||||
} | |||||
.banner{ | |||||
border-bottom: 12px solid #222; | |||||
padding: 0 12px; | |||||
position: relative; | |||||
} | |||||
.banner h1{ | |||||
font-weight: 100; | |||||
font-size: 32px; | |||||
line-height: 48px; | |||||
} | |||||
.banner h3{ | |||||
color: #666; | |||||
font-weight: normal; | |||||
font-size: 16px; | |||||
line-height: 24px; | |||||
margin-bottom: 12px; | |||||
} | |||||
.banner nav{ | |||||
position: absolute; | |||||
right: 0; | |||||
bottom: 0; | |||||
} | |||||
.banner nav li{ | |||||
list-style-type: none; | |||||
float: left; | |||||
} | |||||
.banner nav li a.button{ | |||||
margin:0; | |||||
-webkit-border-bottom-left-radius: 0; | |||||
-webkit-border-bottom-right-radius: 0; | |||||
-moz-border-radius-bottomleft: 0; | |||||
-moz-border-radius-bottomright: 0; | |||||
border-bottom-left-radius: 0; | |||||
border-bottom-right-radius: 0; | |||||
} | |||||
.banner nav li a.button:hover{ | |||||
color: #000; | |||||
} | |||||
.banner nav li a.button.active{ | |||||
color: #d7d7d7; | |||||
border: solid 1px #333; | |||||
background: #333; | |||||
background: -webkit-gradient(linear, left top, left bottom, from(#666), to(#000)); | |||||
background: -moz-linear-gradient(top, #666, #000); | |||||
filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#666666', endColorstr='#000000'); | |||||
} | |||||
.blog_excerpt{ | |||||
padding-bottom: 24px; | |||||
} | |||||
.blog_excerpt .post time{ | |||||
float: none; | |||||
clear: left; | |||||
} | |||||
.blog_excerpt .button{ | |||||
float: right; | |||||
} | |||||
.blog_excerpt h3, | |||||
h1.title{ | |||||
font-size: 24px; | |||||
line-height: 36px; | |||||
border-bottom: 1px solid #ccc; | |||||
} | |||||
.blog_excerpt h3{ | |||||
margin-bottom: 24px; | |||||
} | |||||
section.content{ | |||||
padding: 12px; | |||||
} | |||||
/* listing */ | |||||
.listing{ | |||||
margin-top: 24px; | |||||
} | |||||
.listing img{ | |||||
width: 120px; | |||||
height: 120px; | |||||
} | |||||
.listing li{ | |||||
background-color: #ededed; | |||||
list-style-type: none; | |||||
float: left; | |||||
width: 272px; | |||||
margin-right: 24px; | |||||
margin-bottom: 24px; | |||||
padding: 12px; | |||||
-moz-box-shadow: 0px 4px 12px #ccc; /* FF3.5+ */ | |||||
-webkit-box-shadow: 0px 4px 12px #ccc; /* Saf3.0+, Chrome */ | |||||
box-shadow: 0px 4px 12px #ccc; /* Opera 10.5, IE 9.0 */ | |||||
filter: progid:DXImageTransform.Microsoft.dropshadow(OffX=12px, OffY=12px, Color='#ccc'); /* IE6,IE7 */ | |||||
-ms-filter: "progid:DXImageTransform.Microsoft.dropshadow(OffX=12px, OffY=12px, Color='#ccc')"; /* IE8 */ | |||||
} | |||||
.listing li:nth-child(2){ | |||||
margin-right: 0; | |||||
} | |||||
.listing li:nth-child(3){ | |||||
clear: left; | |||||
} | |||||
.listing li p{ | |||||
font-size: 10px; | |||||
line-height: 12px; | |||||
margin-bottom: 12px; | |||||
} | |||||
.listing h3{ | |||||
font-size: 16px; | |||||
line-height: 20px; | |||||
} | |||||
.listing time{ | |||||
display:block; | |||||
border-top: 1px solid #ccc; | |||||
padding-top: 4px; | |||||
font-size: 10px; | |||||
} | |||||
/* Content */ | |||||
article.post p{ | |||||
font-size: 12px; | |||||
line-height: 24px; | |||||
margin: 6px 0; | |||||
} | |||||
article.post img{ | |||||
display: block; | |||||
margin-bottom: 24px; | |||||
} | |||||
.post time{ | |||||
font-size: 12px; | |||||
color: #999; | |||||
float:left; | |||||
margin-top: 6px; | |||||
} | |||||
ul.tags{ | |||||
margin-bottom: 24px; | |||||
text-align: right; | |||||
} | |||||
ul.tags li{ | |||||
list-style-type: none; | |||||
display: inline; | |||||
} | |||||
ul.tags li a{ | |||||
color: #999; | |||||
text-decoration: none; | |||||
} | |||||
h1.tag:before, | |||||
ul.tags li a:before{ | |||||
content: '\00AB'; | |||||
} | |||||
h1.tag:after, | |||||
ul.tags li a:after{ | |||||
content: '\00BB'; | |||||
} | |||||
ul.tags li a:hover{ | |||||
color: #222; | |||||
} | |||||
h1 a, h2 a, h3 a{ | |||||
text-decoration: none; | |||||
} | |||||
nav.post_nav{ | |||||
background-color: #efefef; | |||||
position: fixed; | |||||
width: 124px; | |||||
margin-left: -186px; | |||||
font-size: 12px; | |||||
padding: 12px; | |||||
padding-right: 24px; | |||||
-moz-box-shadow: 0px 2px 4px #ccc; /* FF3.5+ */ | |||||
-webkit-box-shadow: 0px 2px 4px #ccc; /* Saf3.0+, Chrome */ | |||||
box-shadow: 0px 2px 4px #ccc; /* Opera 10.5, IE 9.0 */ | |||||
filter: progid:DXImageTransform.Microsoft.dropshadow(OffX=12px, OffY=12px, Color='#ccc'); /* IE6,IE7 */ | |||||
-ms-filter: "progid:DXImageTransform.Microsoft.dropshadow(OffX=12px, OffY=12px, Color='#ccc')"; /* IE8 */ | |||||
} | |||||
a.backlink{ | |||||
display:block; | |||||
line-height: 24px; | |||||
margin-bottom: 12px; | |||||
} | |||||
a.backlink:before{ | |||||
content: '\2190'; | |||||
} | |||||
a.prev:before{ | |||||
content: '\00AB'; | |||||
} | |||||
a.next:after{ | |||||
content: '\00BB'; | |||||
} | |||||
a.prev{ | |||||
margin-right: 12px; | |||||
} | |||||
a.prev, | |||||
a.next{ | |||||
display: block; | |||||
float: left; | |||||
margin-bottom: 12px; | |||||
} | |||||
a.next{ float: right }; | |||||
a.backlink:hover, a.prev:hover, a.next:hover{ | |||||
color: #222; | |||||
} | |||||
.post_nav a.disabled{ | |||||
color: #ccc; | |||||
} | |||||
.post_nav a{ | |||||
color: #666; | |||||
text-decoration: none; | |||||
} | |||||
.post_nav div{ | |||||
display: block; | |||||
float: left; | |||||
width: 58px; | |||||
overflow: hidden; | |||||
margin-left: 4px; | |||||
} | |||||
#facebook_like{ | |||||
margin-top: 1px; | |||||
} | |||||
.archives ul.posts{ | |||||
margin-top: 24px; | |||||
} | |||||
.archives li.post{ | |||||
list-style-type: none; | |||||
border-bottom: 1px dotted #ccc; | |||||
padding: 12px 0; | |||||
} | |||||
.archives li.post time{ | |||||
color: #999; | |||||
margin-right: 24px; | |||||
display:block; | |||||
float: left; | |||||
width: 120px; | |||||
} | |||||
.archives li.post a{ | |||||
float: left; | |||||
} | |||||
.archives ul.tags{ | |||||
float: right; | |||||
margin-bottom:0; | |||||
} | |||||
.codebox { | |||||
margin-top: 8px; | |||||
margin-bottom: 12px; | |||||
} | |||||
.code { | |||||
position: relative; | |||||
-moz-box-shadow: 0 1px 3px rgba(0, 0, 0, 0.5); | |||||
-webkit-box-shadow: 0 1px 3px rgba(0, 0, 0, 0.5); | |||||
-o-box-shadow: 0 1px 3px rgba(0, 0, 0, 0.5); | |||||
box-shadow: 0 1px 3px rgba(0, 0, 0, 0.5); | |||||
background-color: #F0F3F3; | |||||
} | |||||
.code figcaption { | |||||
font-size: 10px; | |||||
position: absolute; | |||||
bottom: 3px; | |||||
right: 12px; | |||||
color: rgba(0, 0, 0, 0.5); | |||||
} | |||||
.highlight pre { | |||||
font-size: 12px; | |||||
padding: 16px 12px 12px; | |||||
line-height: 24px; | |||||
margin-bottom: 8px; | |||||
} |
@@ -0,0 +1,59 @@ | |||||
.c, .cm { color: #998; font-style: italic } /* Comments */ | |||||
.err { color: #a61717; background-color: #e3d2d2 } /* Error */ | |||||
.k { font-weight: bold } /* Keyword */ | |||||
.o { font-weight: bold } /* Operator */ | |||||
.cp { color: #999; font-weight: bold } /* Comment.Preproc */ | |||||
.c1 { color: #998; font-style: italic } /* Comment.Single */ | |||||
.cs { color: #999; font-weight: bold; font-style: italic } /* Comment.Special */ | |||||
.gd { color: #000; background-color: #ffdddd } /* Generic.Deleted */ | |||||
.gd .x { color: #000; background-color: #ffaaaa } /* Generic.Deleted.Specific */ | |||||
.ge { font-style: italic } /* Generic.Emph */ | |||||
.gr { color: #a00 } /* Generic.Error */ | |||||
.gh { color: #999 } /* Generic.Heading */ | |||||
.gi { color: #000; background-color: #ddffdd } /* Generic.Inserted */ | |||||
.gi .x { color: #000; background-color: #aaffaa } /* Generic.Inserted.Specific */ | |||||
.go { color: #888 } /* Generic.Output */ | |||||
.gp { color: #555 } /* Generic.Prompt */ | |||||
.gs { font-weight: bold } /* Generic.Strong */ | |||||
.gu { color: #aaaaaa } /* Generic.Subheading */ | |||||
.gt { color: #a00 } /* Generic.Traceback */ | |||||
.kc { font-weight: bold } /* Keyword.Constant */ | |||||
.kd { font-weight: bold } /* Keyword.Declaration */ | |||||
.kp { font-weight: bold } /* Keyword.Pseudo */ | |||||
.kr { font-weight: bold } /* Keyword.Reserved */ | |||||
.kt { color: #445588; font-weight: bold } /* Keyword.Type */ | |||||
.m { color: #099 } /* Literal.Number */ | |||||
.s { color: #d14 } /* Literal.String */ | |||||
.na { color: #008080 } /* Name.Attribute */ | |||||
.nb { color: #0086B3 } /* Name.Builtin */ | |||||
.nc { color: #445588; font-weight: bold } /* Name.Class */ | |||||
.no { color: #008080 } /* Name.Constant */ | |||||
.ni { color: #800080 } /* Name.Entity */ | |||||
.ne { color: #900; font-weight: bold } /* Name.Exception */ | |||||
.nf { color: #900; font-weight: bold } /* Name.Function */ | |||||
.nn { color: #555 } /* Name.Namespace */ | |||||
.nt { color: #000080 } /* Name.Tag */ | |||||
.nv { color: #008080 } /* Name.Variable */ | |||||
.ow { font-weight: bold } /* Operator.Word */ | |||||
.w { color: #bbb } /* Text.Whitespace */ | |||||
.mf { color: #099 } /* Literal.Number.Float */ | |||||
.mh { color: #099 } /* Literal.Number.Hex */ | |||||
.mi { color: #099 } /* Literal.Number.Integer */ | |||||
.mo { color: #099 } /* Literal.Number.Oct */ | |||||
.sb { color: #d14 } /* Literal.String.Backtick */ | |||||
.sc { color: #d14 } /* Literal.String.Char */ | |||||
.sd { color: #d14 } /* Literal.String.Doc */ | |||||
.s2 { color: #d14 } /* Literal.String.Double */ | |||||
.se { color: #d14 } /* Literal.String.Escape */ | |||||
.sh { color: #d14 } /* Literal.String.Heredoc */ | |||||
.si { color: #d14 } /* Literal.String.Interpol */ | |||||
.sx { color: #d14 } /* Literal.String.Other */ | |||||
.sr { color: #009926 } /* Literal.String.Regex */ | |||||
.s1 { color: #d14 } /* Literal.String.Single */ | |||||
.ss { color: #990073 } /* Literal.String.Symbol */ | |||||
.bp { color: #999 } /* Name.Builtin.Pseudo */ | |||||
.vc { color: #008080 } /* Name.Variable.Class */ | |||||
.vg { color: #008080 } /* Name.Variable.Global */ | |||||
.vi { color: #008080 } /* Name.Variable.Instance */ | |||||
.il { color: #099 } /* Literal.Number.Integer.Long */ | |||||
@@ -0,0 +1 @@ | |||||
uses_template: false |
@@ -0,0 +1 @@ | |||||
extends: false |
@@ -0,0 +1,14 @@ | |||||
--- | |||||
title: December 2016 Baysec | |||||
layout: patriothouse | |||||
event_summary: Baysec | |||||
event_timezone: America/Los_Angeles | |||||
event_start: 20161220T190000 | |||||
event_end: 20161220T230000 | |||||
event_location: Patriot House Pub | |||||
created: !!timestamp '2016-12-14 01:00:00' | |||||
--- | |||||
# December 20th, 2016 | |||||
Starts at 7pm at Patriot House Pub. |
@@ -0,0 +1,3 @@ | |||||
extends: blog.j2 | |||||
default_block: post | |||||
listable: true |
@@ -0,0 +1,3 @@ | |||||
author: Lakshmi Vyasarajan | |||||
description: A basic layout for hyde. Based on html5 boilerplate | |||||
version: 0.1 |
@@ -0,0 +1,14 @@ | |||||
{% if site.config.mode == "production" %} | |||||
<!-- asynchronous google analytics: mathiasbynens.be/notes/async-analytics-snippet | |||||
change the UA-XXXXX-X to be your site's ID --> | |||||
<script> | |||||
var _gaq = [['_setAccount', '{{ resource.meta.analytics.id }}'], ['_trackPageview']]; | |||||
(function(d, t) { | |||||
var g = d.createElement(t), | |||||
s = d.getElementsByTagName(t)[0]; | |||||
g.async = true; | |||||
g.src = ('https:' == location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js'; | |||||
s.parentNode.insertBefore(g, s); | |||||
})(document, 'script'); | |||||
</script> | |||||
{% endif %} |
@@ -0,0 +1,49 @@ | |||||
{% from "macros.j2" import render_excerpt, render_post with context %} | |||||
<?xml version="1.0" encoding="utf-8"?> | |||||
<feed xmlns="http://www.w3.org/2005/Atom"> | |||||
<title> | |||||
{% block title %}{{ resource.meta.title|default(feed_title) }}{% endblock %} | |||||
</title> | |||||
{% block self_url %} | |||||
<link href="{{ resource.url }}" rel="self" /> | |||||
{% endblock %} | |||||
{% block site_url %} | |||||
<link href="{{ content_url('') }}"/> | |||||
{% endblock %} | |||||
{% block feed_extra %} | |||||
{% endblock %} | |||||
<updated>{{ time_now|xmldatetime }}</updated> | |||||
<id>{{ content_url(resource.url) }}/</id> | |||||
{% for res in resource.node.walk_resources_sorted_by_time() %} | |||||
<entry> | |||||
<title type="html">{{ res.meta.title|forceescape }}</title> | |||||
<author><name>{{ res.meta.author }}</name></author> | |||||
<link href="{{ content_url(res.url) }}"/> | |||||
<updated>{{ res.meta.created|xmldatetime }}</updated> | |||||
<published>{{ res.meta.created|xmldatetime }}</published> | |||||
<id>{{ content_url(res.url) }}</id> | |||||
{% for tag in res.meta.tags %} | |||||
<category scheme="{{ content_url('blog/tags') }}" | |||||
term="{{tag}}" | |||||
label="{{ tag|title }}" /> | |||||
{% endfor %} | |||||
<content type="html"> | |||||
{% refer to res.relative_path as article -%} | |||||
{% filter forceescape -%} | |||||
{% if resource.meta.excerpts_only -%} | |||||
{{ article.image|markdown|typogrify }} | |||||
{{ article.excerpt|markdown|typogrify }} | |||||
{%- else %} | |||||
{{ article.post|markdown|typogrify }} | |||||
{%- endif %} | |||||
{%- endfilter %} | |||||
</content> | |||||
</entry> | |||||
{% endfor %} | |||||
</feed> |
@@ -0,0 +1,94 @@ | |||||
<!doctype html> | |||||
<!-- https://github.com/paulirish/html5-boilerplate/blob/master/index.html --> | |||||
<!-- paulirish.com/2008/conditional-stylesheets-vs-css-hacks-answer-neither/ --> | |||||
<!--[if (gte IE 9)|!(IE)]><!--> <html lang="en" class="no-js"> <!--<![endif]--> | |||||
<head> | |||||
{% block starthead %}{% endblock starthead %} | |||||
<meta charset="{{ resource.meta.charset }}"> | |||||
<!-- Always force latest IE rendering engine (even in intranet) & Chrome Frame | |||||
Remove this if you use the .htaccess --> | |||||
<meta http-equiv="X-UA-Compatible" content="{{ resource.meta.compatibility }}"> | |||||
<!-- encoding must be specified within the first 512 bytes | |||||
www.whatwg.org/specs/web-apps/current-work/multipage/semantics.html#charset --> | |||||
<!-- meta element for compatibility mode needs to be before | |||||
all elements except title & meta | |||||
msdn.microsoft.com/en-us/library/cc288325(VS.85).aspx --> | |||||
<!-- Chrome Frame is only invoked if meta element for | |||||
compatibility mode is within the first 1K bytes | |||||
code.google.com/p/chromium/issues/detail?id=23003 --> | |||||
<title>{% block title %}{{ resource.meta.title }}{% endblock %}</title> | |||||
<meta name="description" content="{{ resource.meta.description }}"> | |||||
<meta name="author" content="{{ resource.meta.author }}"> | |||||
<!-- Mobile viewport optimized: j.mp/bplateviewport --> | |||||
<meta name="viewport" content="{{ resource.meta.viewport }}"> | |||||
{% block favicons %} | |||||
<!-- Place favicon.ico & apple-touch-icon.png | |||||
in the root of your domain and delete these references --> | |||||
<link rel="shortcut icon" href="{{ media_url('/images/favicon.ico') }}"> | |||||
<link rel="apple-touch-icon" href="{{ media_url('/images/apple-touch-icon.png') }}"> | |||||
{% endblock favicons %} | |||||
{% block css %} | |||||
<link rel="stylesheet" href="{{ media_url('css/site.css') }}"> | |||||
<link rel="stylesheet" href="{{ media_url('css/syntax.css') }}"> | |||||
{% endblock css %} | |||||
{% block headjs %} | |||||
<!-- All JavaScript at the bottom, except for Modernizr which | |||||
enables HTML5 elements & feature detects --> | |||||
<script src="{{ media_url('js/libs/modernizr-1.7.min.js') }}"></script> | |||||
{% endblock headjs %} | |||||
{% block endhead %}{% endblock endhead %} | |||||
</head> | |||||
<body id="{{ resource.meta.id if resource.meta.id else resource.slug }}"> | |||||
{% block content %} | |||||
<div id="container"> | |||||
{% block container %} | |||||
<div id="main" role="main"> | |||||
<header class="banner clearfix"> | |||||
{% block header -%} | |||||
<h1>BaySec</h1> | |||||
<h3>SF Bay Area Security Professional Meetup</h3> | |||||
{%- endblock %} | |||||
</header> | |||||
<section class="content"> | |||||
{% block main %} | |||||
{% endblock main %} | |||||
</section> | |||||
</div> | |||||
{% endblock container %} | |||||
</div> <!--! end of #container --> | |||||
<footer> | |||||
Powered by <a href="https://github.com/hyde/hyde">hyde</a>. | |||||
</footer> | |||||
{% endblock content%} | |||||
{% block js %} | |||||
<!-- Javascript at the bottom for fast page loading --> | |||||
{% block jquery %} | |||||
<!-- Grab Google CDN's jQuery, with a protocol relative URL; fall back to local if necessary --> | |||||
<script src="//ajax.googleapis.com/ajax/libs/jquery/1.5.1/jquery.js"></script> | |||||
<script>window.jQuery || document.write('<script src="js/libs/jquery-1.5.1.min.js">\x3C/script>')</script> | |||||
{% endblock jquery %} | |||||
{% block scripts %} | |||||
{% endblock scripts %} | |||||
<!--[if lt IE 7 ]> | |||||
<script src="js/libs/dd_belatedpng.js"></script> | |||||
<script>DD_belatedPNG.fix('img, .png_bg'); // Fix any <img> or .png_bg bg-images. Also, please read goo.gl/mZiyb </script> | |||||
<![endif]--> | |||||
{% block analytics %} | |||||
{% include "analytics.j2" %} | |||||
{% endblock analytics %} | |||||
{% endblock js %} | |||||
</body> | |||||
</html> |
@@ -0,0 +1,67 @@ | |||||
{% extends "base.j2" %} | |||||
{% block main -%} | |||||
<article class="post"> | |||||
<nav class="post_nav"> | |||||
<a class="backlink" href="/">Back to list</a> | |||||
<a class="prev{{' disabled' if not resource.prev_by_time }}" | |||||
title="{{ resource.prev_by_time.meta.title }}" | |||||
{% if resource.prev_by_time %} | |||||
href="{{ content_url(resource.prev_by_time.url) }}"{% endif %}> | |||||
Previous | |||||
</a> | |||||
<a class="next{{' disabled' if not resource.next_by_time }}" | |||||
title="{{ resource.next_by_time.meta.title }}" | |||||
{% if resource.next_by_time %} | |||||
href="{{ content_url(resource.next_by_time.url) }}"{% endif %}> | |||||
Next | |||||
</a> | |||||
<br> | |||||
<div id="twitter_share"> | |||||
<a href="https://twitter.com/share" | |||||
class="twitter-share-button" | |||||
data-count="vertical" | |||||
data-via="{{ tweet_via }}">Tweet</a> | |||||
<script type="text/javascript" | |||||
src="https://platform.twitter.com/widgets.js"></script> | |||||
</div> | |||||
<div id="facebook_like"> | |||||
<iframe src="https://www.facebook.com/plugins/like.php?href&layout=box_count&show_faces=false&width=450&action=like&font=arial&colorscheme=light&height=65" | |||||
scrolling="no" | |||||
frameborder="0" | |||||
style="border:none; overflow:hidden; width:450px; height:65px;" | |||||
allowTransparency="true"></iframe> | |||||
</div> | |||||
</nav> | |||||
<h1 class="title"> | |||||
<a href="{{ content_url(resource.url) }}"> | |||||
{{ resource.meta.title }} | |||||
</a> | |||||
</h1> | |||||
<time datetime="{{ resource.meta.created.strftime('%Y-%m-%d') }}"> | |||||
Posted: {{ resource.meta.created.strftime('%a, %d %b %Y') }} | |||||
</time> | |||||
{% if resource.meta.tags %} | |||||
<ul class="tags clear"> | |||||
{% for tag in resource.meta.tags %} | |||||
<li> | |||||
<a class="small" href="{{ content_url('blog/tags/'~tag~'.html') }}"> | |||||
{{ tag }} | |||||
</a> | |||||
</li> | |||||
{% endfor %} | |||||
</ul> | |||||
{% endif %} | |||||
<div class="clear"/> | |||||
<br/> | |||||
{% filter markdown|typogrify -%} | |||||
{% mark post -%} | |||||
{% block post -%}{%- endblock %} | |||||
{%- endmark %} | |||||
{%- endfilter %} | |||||
</article> | |||||
{%- endblock %} |
@@ -0,0 +1,4 @@ | |||||
{%if not site.config.mode == "production" %} | |||||
<script src="js/profiling/yahoo-profiling.min.js"></script> | |||||
<script src="js/profiling/config.js"></script> | |||||
{% endif %} |
@@ -0,0 +1,13 @@ | |||||
{% extends "base.j2" %} | |||||
{% from "macros.j2" import render_link with context %} | |||||
{% block main %} | |||||
{% block page_title %}<h1 class="title">{{ resource.meta.title }}</h1>{% endblock %} | |||||
<ul class="listing clearfix"> | |||||
{% for res in resource.node.walk_resources_sorted_by_time() %} | |||||
<li> | |||||
{{ render_link(res) }} | |||||
</li> | |||||
{% endfor %} | |||||
</ul> | |||||
{% endblock %} |
@@ -0,0 +1,45 @@ | |||||
{% macro render_link(res, class=None) %} | |||||
{% refer to res.relative_path as post %} | |||||
<h3><a href="{{ content_url(res.url) }}">{{ res.meta.title }}</a></h3> | |||||
{% endmacro %} | |||||
{% macro render_excerpt(res, class=None) %} | |||||
{% refer to res.relative_path as post %} | |||||
<article {{'class='~class if class }}> | |||||
<h3><a href="{{ content_url(res.url) }}">{{ res.meta.title }}</a></h3> | |||||
<a href="{{ content_url(res.url) }}">{{ post.image|markdown|typogrify }}</a> | |||||
{{ post.excerpt|markdown|typogrify }} | |||||
<time datetime="{{ res.meta.created.strftime('%Y-%m-%d') }}"> | |||||
Posted: {{ res.meta.created.strftime('%a, %d %b %Y') }} | |||||
</time> | |||||
</article> | |||||
{% endmacro %} | |||||
{% macro render_nav(menu, cls=None) -%} | |||||
{% if menu -%} | |||||
<nav {{'class='~cls if cls }}> | |||||
<ul> | |||||
{% for item in menu -%} | |||||
{% set active = False -%} | |||||
{% if item.type == 'page' -%} | |||||
{% set active = (resource.url == | |||||
site.content.resource_from_relative_path(item.url).url) -%} | |||||
{% else -%} | |||||
{% set active = (node == | |||||
site.content.node_from_relative_path(item.url)) -%} | |||||
{%- endif %} | |||||
{% set classes = ['button', 'white'] -%} | |||||
{% do classes.append('active') if active -%} | |||||
{% do classes.append(item.css_class) if item.css_class -%} | |||||
<li> | |||||
<a title="{{ item.description }}" | |||||
class="{{ classes|join(' ') }}" | |||||
href="{{ content_url(item.url) }}"> | |||||
{{ item.name }} | |||||
</a> | |||||
</li> | |||||
{%- endfor %} | |||||
</ul> | |||||
</nav> | |||||
{%- endif %} | |||||
{%- endmacro %} |
@@ -0,0 +1 @@ | |||||
For debugging: http://stackoverflow.com/questions/13436841/display-all-jinja-object-attributes |
@@ -0,0 +1,31 @@ | |||||
mode: development | |||||
media_root: media # Relative path from content folder. | |||||
media_url: /media # URL where the media files are served from. | |||||
base_url: / # The base url for autogenerated links. | |||||
plugins: | |||||
- hyde.ext.plugins.meta.MetaPlugin | |||||
- hyde.ext.plugins.meta.AutoExtendPlugin | |||||
- hyde.ext.plugins.meta.SorterPlugin | |||||
- hyde.ext.plugins.text.SyntextPlugin | |||||
- hyde.ext.plugins.text.TextlinksPlugin | |||||
context: | |||||
data: | |||||
tweet_via: encthenet | |||||
meta: | |||||
nodemeta: meta.yaml | |||||
created: !!timestamp 2010-01-01 00:00:00 | |||||
author: John-Mark Gurney | |||||
sorter: | |||||
time: | |||||
attr: | |||||
- meta.created | |||||
reverse: true | |||||
filters: | |||||
source.kind: html | |||||
meta.listable: true | |||||
publisher: | |||||
github: | |||||
type: hyde.ext.publishers.dvcs.Git | |||||
path: . | |||||
url: git@github.com:baysec/baysec.git | |||||
branch: gh-pages |