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 |