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 | |||||