Browse Source

initial version of the BaySec website..

Feel free to suggest better layout, etc..
master
John-Mark Gurney 3 years ago
commit
f4564c4e6e

+ 3
- 0
.gitignore View File

@@ -0,0 +1,3 @@
1
+.hyde_deps
2
+deploy
3
+*.pyc

+ 4
- 0
README.md View File

@@ -0,0 +1,4 @@
1
+BaySec Website Source
2
+=====================
3
+
4
+Source to build the BaySec website.

+ 5
- 0
content/atom.xml View File

@@ -0,0 +1,5 @@
1
+===
2
+title: BaySec Event feed
3
+extends: atom.j2
4
+listable: false
5
+===

+ 15
- 0
content/calendar.ics View File

@@ -0,0 +1,15 @@
1
+BEGIN:VCALENDAR
2
+METHOD:PUBLISH
3
+VERSION:2.0
4
+PRODID:-//BaySec Creations//Hyde Jinja2 Templates 0.1//EN
5
+{% for post in resource.node.walk_resources_sorted_by_time() %}
6
+{% if post.meta.event_summary %}
7
+BEGIN:VEVENT
8
+SUMMARY:{{ post.meta.event_summary }}
9
+LOCATION:{{ post.meta.event_location }}
10
+DTSTART{% if post.meta.event_timezone %};TZID={{ post.meta.event_timezone }}{% endif %}:{{ post.meta.event_start }}
11
+DTEND{% if post.meta.event_timezone %};TZID={{ post.meta.event_timezone }}{% endif %}:{{ post.meta.event_end }}
12
+END:VEVENT
13
+{% endif %}
14
+{% endfor %}
15
+END:VCALENDAR

+ 11
- 0
content/index.html View File

@@ -0,0 +1,11 @@
1
+---
2
+title: BaySec
3
+description: SF Bay Area Security Professionals Meetup
4
+extends: listing.j2
5
+default_block: test
6
+listable: false
7
+---
8
+{% block page_title %}
9
+BaySec is a meetup for security professionals that happens the third Tuesday of each month.
10
+An <a href="/calendar.ics">ICS calendar</a> is available.
11
+{% endblock %}

+ 468
- 0
content/media/css/site.css View File

@@ -0,0 +1,468 @@
1
+* {
2
+    vertical-align: baseline;
3
+    font-weight: inherit;
4
+    font-family: inherit;
5
+    font-style: inherit;
6
+    text-decoration:inherit;
7
+    font-size: 100%;
8
+    padding: 0;
9
+    border: 0;
10
+    margin: 0;
11
+}
12
+
13
+article,aside,details,figcaption,figure,
14
+footer,header,hgroup,menu,nav,section {
15
+    display:block;
16
+}
17
+
18
+table {
19
+    border-collapse: collapse;
20
+}
21
+
22
+:focus {
23
+    outline: 0;
24
+}
25
+
26
+::-moz-focus-inner {
27
+    border: 0;
28
+}
29
+
30
+.clear {
31
+    clear: both;
32
+}
33
+
34
+/* clearfix */
35
+.clearfix:after {
36
+    content: ".";
37
+    display: block;
38
+    clear: both;
39
+    visibility: hidden;
40
+    line-height: 0;
41
+    height: 0;
42
+}
43
+
44
+.clearfix {
45
+    display: block;
46
+}
47
+
48
+
49
+* html .clearfix {
50
+    height: 1%;
51
+}
52
+
53
+a {
54
+    color: #37e;
55
+    text-decoration: underline;
56
+}
57
+
58
+a:hover{
59
+    color: #222;
60
+}
61
+
62
+body{
63
+    font-family: "Helvetica Neue", Helvetica, Arial, sans-serif;
64
+    background-color: #efefef;
65
+    padding: 0;
66
+    margin: 0;
67
+}
68
+
69
+#container{
70
+          background-color: #eaeaea;
71
+          width: 640px;
72
+         margin: 0 auto;
73
+         padding: 12px;
74
+-moz-box-shadow: 0px 4px 12px #ccc; /* FF3.5+ */
75
+-webkit-box-shadow: 0px 4px 12px #ccc; /* Saf3.0+, Chrome */
76
+      box-shadow: 0px 4px 12px #ccc; /* Opera 10.5, IE 9.0 */
77
+          filter:  progid:DXImageTransform.Microsoft.dropshadow(OffX=12px, OffY=12px, Color='#ccc'); /* IE6,IE7 */
78
+      -ms-filter: "progid:DXImageTransform.Microsoft.dropshadow(OffX=12px, OffY=12px, Color='#ccc')"; /* IE8 */
79
+}
80
+
81
+footer{
82
+    font-size: 10px;
83
+    text-align: center;
84
+    margin-top: 24px;
85
+}
86
+
87
+/* Button styles from the awesome: http://www.webdesignerwall.com/demo/css-buttons.html */
88
+
89
+.button {
90
+    display: inline-block;
91
+    zoom: 1; /* zoom and *display = ie7 hack for display:inline-block */
92
+    *display: inline;
93
+    vertical-align: baseline;
94
+    margin: 0 2px;
95
+    outline: none;
96
+    cursor: pointer;
97
+    text-align: center;
98
+    text-decoration: none;
99
+    font: 14px/100% Arial, Helvetica, sans-serif;
100
+    padding: .5em 2em .55em;
101
+    text-shadow: 0 1px 1px rgba(0,0,0,.3);
102
+    -webkit-border-radius: .5em;
103
+    -moz-border-radius: .5em;
104
+    border-radius: .5em;
105
+    -webkit-box-shadow: 0 1px 2px rgba(0,0,0,.2);
106
+    -moz-box-shadow: 0 1px 2px rgba(0,0,0,.2);
107
+    box-shadow: 0 1px 2px rgba(0,0,0,.2);
108
+}
109
+.button:hover {
110
+    text-decoration: none;
111
+}
112
+.button:active {
113
+    position: relative;
114
+    top: 1px;
115
+}
116
+
117
+.bigrounded {
118
+    -webkit-border-radius: 2em;
119
+    -moz-border-radius: 2em;
120
+    border-radius: 2em;
121
+}
122
+.medium {
123
+    font-size: 12px;
124
+    padding: .4em 1.5em .42em;
125
+}
126
+.small {
127
+    font-size: 11px;
128
+    padding: .2em 1em .275em;
129
+}
130
+
131
+
132
+/* white */
133
+.white {
134
+    color: #606060;
135
+    border: solid 1px #b7b7b7;
136
+    background: #fff;
137
+    background: -webkit-gradient(linear, left top, left bottom, from(#fff), to(#ededed));
138
+    background: -moz-linear-gradient(top,  #fff,  #ededed);
139
+    filter:  progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffffff', endColorstr='#ededed');
140
+}
141
+.white:hover {
142
+    background: #ededed;
143
+    background: -webkit-gradient(linear, left top, left bottom, from(#fff), to(#dcdcdc));
144
+    background: -moz-linear-gradient(top,  #fff,  #dcdcdc);
145
+    filter:  progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffffff', endColorstr='#dcdcdc');
146
+}
147
+.white:active {
148
+    color: #999;
149
+    background: -webkit-gradient(linear, left top, left bottom, from(#ededed), to(#fff));
150
+    background: -moz-linear-gradient(top,  #ededed,  #fff);
151
+    filter:  progid:DXImageTransform.Microsoft.gradient(startColorstr='#ededed', endColorstr='#ffffff');
152
+}
153
+
154
+.banner{
155
+    border-bottom: 12px solid #222;
156
+    padding: 0 12px;
157
+    position: relative;
158
+}
159
+
160
+.banner h1{
161
+    font-weight: 100;
162
+    font-size: 32px;
163
+    line-height: 48px;
164
+}
165
+
166
+
167
+.banner h3{
168
+    color: #666;
169
+    font-weight: normal;
170
+    font-size: 16px;
171
+    line-height: 24px;
172
+    margin-bottom: 12px;
173
+}
174
+
175
+.banner nav{
176
+    position: absolute;
177
+    right: 0;
178
+    bottom: 0;
179
+}
180
+
181
+.banner nav li{
182
+    list-style-type: none;
183
+    float: left;
184
+}
185
+
186
+.banner nav li a.button{
187
+    margin:0;
188
+    -webkit-border-bottom-left-radius: 0;
189
+    -webkit-border-bottom-right-radius: 0;
190
+    -moz-border-radius-bottomleft: 0;
191
+    -moz-border-radius-bottomright: 0;
192
+    border-bottom-left-radius: 0;
193
+    border-bottom-right-radius: 0;
194
+}
195
+
196
+.banner nav li a.button:hover{
197
+    color: #000;
198
+}
199
+.banner nav li a.button.active{
200
+    color: #d7d7d7;
201
+    border: solid 1px #333;
202
+    background: #333;
203
+    background: -webkit-gradient(linear, left top, left bottom, from(#666), to(#000));
204
+    background: -moz-linear-gradient(top,  #666,  #000);
205
+    filter:  progid:DXImageTransform.Microsoft.gradient(startColorstr='#666666', endColorstr='#000000');
206
+}
207
+
208
+.blog_excerpt{
209
+    padding-bottom: 24px;
210
+}
211
+
212
+.blog_excerpt .post time{
213
+    float: none;
214
+    clear: left;
215
+}
216
+
217
+.blog_excerpt .button{
218
+    float: right;
219
+}
220
+
221
+.blog_excerpt h3,
222
+h1.title{
223
+    font-size: 24px;
224
+    line-height: 36px;
225
+    border-bottom: 1px solid #ccc;
226
+}
227
+
228
+.blog_excerpt h3{
229
+    margin-bottom: 24px;
230
+}
231
+
232
+section.content{
233
+    padding: 12px;
234
+}
235
+
236
+/* listing */
237
+
238
+.listing{
239
+    margin-top: 24px;
240
+}
241
+
242
+.listing img{
243
+    width: 120px;
244
+    height: 120px;
245
+}
246
+
247
+.listing li{
248
+    background-color: #ededed;
249
+    list-style-type: none;
250
+    float: left;
251
+    width: 272px;
252
+    margin-right: 24px;
253
+    margin-bottom: 24px;
254
+    padding: 12px;
255
+    -moz-box-shadow: 0px 4px 12px #ccc; /* FF3.5+ */
256
+    -webkit-box-shadow: 0px 4px 12px #ccc; /* Saf3.0+, Chrome */
257
+          box-shadow: 0px 4px 12px #ccc; /* Opera 10.5, IE 9.0 */
258
+              filter:  progid:DXImageTransform.Microsoft.dropshadow(OffX=12px, OffY=12px, Color='#ccc'); /* IE6,IE7 */
259
+          -ms-filter: "progid:DXImageTransform.Microsoft.dropshadow(OffX=12px, OffY=12px, Color='#ccc')"; /* IE8 */
260
+
261
+}
262
+
263
+.listing li:nth-child(2){
264
+    margin-right: 0;
265
+}
266
+
267
+.listing li:nth-child(3){
268
+    clear: left;
269
+}
270
+
271
+.listing li p{
272
+    font-size: 10px;
273
+    line-height: 12px;
274
+    margin-bottom: 12px;
275
+}
276
+
277
+
278
+.listing h3{
279
+    font-size: 16px;
280
+    line-height: 20px;
281
+}
282
+
283
+.listing time{
284
+    display:block;
285
+    border-top: 1px solid #ccc;
286
+    padding-top: 4px;
287
+    font-size: 10px;
288
+}
289
+
290
+/* Content */
291
+
292
+article.post p{
293
+    font-size: 12px;
294
+    line-height: 24px;
295
+    margin: 6px 0;
296
+}
297
+
298
+article.post img{
299
+    display: block;
300
+    margin-bottom: 24px;
301
+}
302
+
303
+.post time{
304
+    font-size: 12px;
305
+    color: #999;
306
+    float:left;
307
+    margin-top: 6px;
308
+}
309
+
310
+ul.tags{
311
+    margin-bottom: 24px;
312
+    text-align: right;
313
+}
314
+
315
+ul.tags li{
316
+    list-style-type: none;
317
+    display: inline;
318
+}
319
+
320
+ul.tags li a{
321
+    color: #999;
322
+    text-decoration: none;
323
+}
324
+
325
+h1.tag:before,
326
+ul.tags li a:before{
327
+    content: '\00AB';
328
+}
329
+
330
+h1.tag:after,
331
+ul.tags li a:after{
332
+    content: '\00BB';
333
+}
334
+
335
+ul.tags li a:hover{
336
+    color: #222;
337
+}
338
+
339
+h1 a, h2 a, h3 a{
340
+    text-decoration: none;
341
+}
342
+
343
+nav.post_nav{
344
+    background-color: #efefef;
345
+    position: fixed;
346
+    width: 124px;
347
+    margin-left: -186px;
348
+    font-size: 12px;
349
+    padding: 12px;
350
+    padding-right: 24px;
351
+    -moz-box-shadow: 0px 2px 4px #ccc; /* FF3.5+ */
352
+    -webkit-box-shadow: 0px 2px 4px #ccc; /* Saf3.0+, Chrome */
353
+          box-shadow: 0px 2px 4px #ccc; /* Opera 10.5, IE 9.0 */
354
+              filter:  progid:DXImageTransform.Microsoft.dropshadow(OffX=12px, OffY=12px, Color='#ccc'); /* IE6,IE7 */
355
+          -ms-filter: "progid:DXImageTransform.Microsoft.dropshadow(OffX=12px, OffY=12px, Color='#ccc')"; /* IE8 */
356
+
357
+}
358
+
359
+a.backlink{
360
+    display:block;
361
+    line-height: 24px;
362
+    margin-bottom: 12px;
363
+}
364
+
365
+a.backlink:before{
366
+    content: '\2190';
367
+}
368
+
369
+a.prev:before{
370
+    content: '\00AB';
371
+}
372
+
373
+a.next:after{
374
+    content: '\00BB';
375
+}
376
+
377
+a.prev{
378
+    margin-right: 12px;
379
+}
380
+
381
+a.prev,
382
+a.next{
383
+    display: block;
384
+    float: left;
385
+    margin-bottom: 12px;
386
+}
387
+
388
+a.next{ float: right };
389
+
390
+a.backlink:hover, a.prev:hover, a.next:hover{
391
+    color: #222;
392
+}
393
+
394
+.post_nav a.disabled{
395
+    color: #ccc;
396
+}
397
+
398
+.post_nav a{
399
+    color: #666;
400
+    text-decoration: none;
401
+}
402
+
403
+.post_nav div{
404
+    display: block;
405
+    float: left;
406
+    width: 58px;
407
+    overflow: hidden;
408
+    margin-left: 4px;
409
+}
410
+
411
+#facebook_like{
412
+    margin-top: 1px;
413
+}
414
+
415
+.archives ul.posts{
416
+    margin-top: 24px;
417
+}
418
+
419
+.archives li.post{
420
+    list-style-type: none;
421
+    border-bottom: 1px dotted #ccc;
422
+    padding: 12px 0;
423
+
424
+}
425
+
426
+.archives li.post time{
427
+    color: #999;
428
+    margin-right: 24px;
429
+    display:block;
430
+    float: left;
431
+    width: 120px;
432
+}
433
+
434
+.archives li.post a{
435
+    float: left;
436
+}
437
+
438
+.archives ul.tags{
439
+    float: right;
440
+    margin-bottom:0;
441
+}
442
+
443
+
444
+.codebox {
445
+  margin-top: 8px;
446
+  margin-bottom: 12px;
447
+}
448
+.code {
449
+  position: relative;
450
+  -moz-box-shadow: 0 1px 3px rgba(0, 0, 0, 0.5);
451
+  -webkit-box-shadow: 0 1px 3px rgba(0, 0, 0, 0.5);
452
+  -o-box-shadow: 0 1px 3px rgba(0, 0, 0, 0.5);
453
+  box-shadow: 0 1px 3px rgba(0, 0, 0, 0.5);
454
+  background-color: #F0F3F3;
455
+}
456
+.code figcaption {
457
+  font-size: 10px;
458
+  position: absolute;
459
+  bottom: 3px;
460
+  right: 12px;
461
+  color: rgba(0, 0, 0, 0.5);
462
+}
463
+.highlight pre {
464
+  font-size: 12px;
465
+  padding: 16px 12px 12px;
466
+  line-height: 24px;
467
+  margin-bottom: 8px;
468
+}

+ 59
- 0
content/media/css/syntax.css View File

@@ -0,0 +1,59 @@
1
+.c, .cm { color: #998; font-style: italic } /* Comments */
2
+.err { color: #a61717; background-color: #e3d2d2 } /* Error */
3
+.k { font-weight: bold } /* Keyword */
4
+.o { font-weight: bold } /* Operator */
5
+.cp { color: #999; font-weight: bold } /* Comment.Preproc */
6
+.c1 { color: #998; font-style: italic } /* Comment.Single */
7
+.cs { color: #999; font-weight: bold; font-style: italic } /* Comment.Special */
8
+.gd { color: #000; background-color: #ffdddd } /* Generic.Deleted */
9
+.gd .x { color: #000; background-color: #ffaaaa } /* Generic.Deleted.Specific */
10
+.ge { font-style: italic } /* Generic.Emph */
11
+.gr { color: #a00 } /* Generic.Error */
12
+.gh { color: #999 } /* Generic.Heading */
13
+.gi { color: #000; background-color: #ddffdd } /* Generic.Inserted */
14
+.gi .x { color: #000; background-color: #aaffaa } /* Generic.Inserted.Specific */
15
+.go { color: #888 } /* Generic.Output */
16
+.gp { color: #555 } /* Generic.Prompt */
17
+.gs { font-weight: bold } /* Generic.Strong */
18
+.gu { color: #aaaaaa } /* Generic.Subheading */
19
+.gt { color: #a00 } /* Generic.Traceback */
20
+.kc { font-weight: bold } /* Keyword.Constant */
21
+.kd { font-weight: bold } /* Keyword.Declaration */
22
+.kp { font-weight: bold } /* Keyword.Pseudo */
23
+.kr { font-weight: bold } /* Keyword.Reserved */
24
+.kt { color: #445588; font-weight: bold } /* Keyword.Type */
25
+.m { color: #099 } /* Literal.Number */
26
+.s { color: #d14 } /* Literal.String */
27
+.na { color: #008080 } /* Name.Attribute */
28
+.nb { color: #0086B3 } /* Name.Builtin */
29
+.nc { color: #445588; font-weight: bold } /* Name.Class */
30
+.no { color: #008080 } /* Name.Constant */
31
+.ni { color: #800080 } /* Name.Entity */
32
+.ne { color: #900; font-weight: bold } /* Name.Exception */
33
+.nf { color: #900; font-weight: bold } /* Name.Function */
34
+.nn { color: #555 } /* Name.Namespace */
35
+.nt { color: #000080 } /* Name.Tag */
36
+.nv { color: #008080 } /* Name.Variable */
37
+.ow { font-weight: bold } /* Operator.Word */
38
+.w { color: #bbb } /* Text.Whitespace */
39
+.mf { color: #099 } /* Literal.Number.Float */
40
+.mh { color: #099 } /* Literal.Number.Hex */
41
+.mi { color: #099 } /* Literal.Number.Integer */
42
+.mo { color: #099 } /* Literal.Number.Oct */
43
+.sb { color: #d14 } /* Literal.String.Backtick */
44
+.sc { color: #d14 } /* Literal.String.Char */
45
+.sd { color: #d14 } /* Literal.String.Doc */
46
+.s2 { color: #d14 } /* Literal.String.Double */
47
+.se { color: #d14 } /* Literal.String.Escape */
48
+.sh { color: #d14 } /* Literal.String.Heredoc */
49
+.si { color: #d14 } /* Literal.String.Interpol */
50
+.sx { color: #d14 } /* Literal.String.Other */
51
+.sr { color: #009926 } /* Literal.String.Regex */
52
+.s1 { color: #d14 } /* Literal.String.Single */
53
+.ss { color: #990073 } /* Literal.String.Symbol */
54
+.bp { color: #999 } /* Name.Builtin.Pseudo */
55
+.vc { color: #008080 } /* Name.Variable.Class */
56
+.vg { color: #008080 } /* Name.Variable.Global */
57
+.vi { color: #008080 } /* Name.Variable.Instance */
58
+.il { color: #099 } /* Literal.Number.Integer.Long */
59
+

BIN
content/media/images/apple-touch-icon.png View File


BIN
content/media/images/favicon.ico View File


+ 13
- 0
content/media/js/libs/dd_belatedpng.js
File diff suppressed because it is too large
View File


+ 16
- 0
content/media/js/libs/jquery-1.5.1.min.js
File diff suppressed because it is too large
View File


+ 1
- 0
content/media/js/libs/meta.yaml View File

@@ -0,0 +1 @@
1
+uses_template: false

+ 2
- 0
content/media/js/libs/modernizr-1.7.min.js
File diff suppressed because it is too large
View File


+ 1
- 0
content/media/meta.yaml View File

@@ -0,0 +1 @@
1
+extends: false

+ 14
- 0
content/meetups/2016-12-13-December.html View File

@@ -0,0 +1,14 @@
1
+---
2
+title: December 2016 Baysec
3
+layout: patriothouse
4
+event_summary: Baysec
5
+event_timezone: America/Los_Angeles
6
+event_start: 20161220T190000
7
+event_end: 20161220T230000
8
+event_location: Patriot House Pub
9
+created: !!timestamp '2016-12-14 01:00:00'
10
+---
11
+
12
+# December 20th, 2016
13
+
14
+Starts at 7pm at Patriot House Pub.

+ 3
- 0
content/meetups/meta.yaml View File

@@ -0,0 +1,3 @@
1
+extends: blog.j2
2
+default_block: post
3
+listable: true

+ 3
- 0
info.yaml View File

@@ -0,0 +1,3 @@
1
+author: Lakshmi Vyasarajan
2
+description: A basic layout for hyde. Based on html5 boilerplate
3
+version: 0.1

+ 14
- 0
layout/analytics.j2 View File

@@ -0,0 +1,14 @@
1
+{% if site.config.mode == "production" %}
2
+<!-- asynchronous google analytics: mathiasbynens.be/notes/async-analytics-snippet
3
+       change the UA-XXXXX-X to be your site's ID -->
4
+<script>
5
+    var _gaq = [['_setAccount', '{{ resource.meta.analytics.id }}'], ['_trackPageview']];
6
+    (function(d, t) {
7
+    var g = d.createElement(t),
8
+        s = d.getElementsByTagName(t)[0];
9
+    g.async = true;
10
+    g.src = ('https:' == location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
11
+    s.parentNode.insertBefore(g, s);
12
+    })(document, 'script');
13
+</script>
14
+{% endif %}

+ 49
- 0
layout/atom.j2 View File

@@ -0,0 +1,49 @@
1
+{% from "macros.j2" import render_excerpt, render_post with context %}
2
+<?xml version="1.0" encoding="utf-8"?>
3
+<feed xmlns="http://www.w3.org/2005/Atom">
4
+    <title>
5
+        {% block title %}{{ resource.meta.title|default(feed_title) }}{% endblock %}
6
+    </title>
7
+    {% block self_url %}
8
+    <link href="{{ resource.url }}" rel="self" />
9
+    {% endblock %}
10
+
11
+    {% block site_url %}
12
+    <link href="{{ content_url('') }}"/>
13
+    {% endblock %}
14
+
15
+    {% block feed_extra %}
16
+    {% endblock %}
17
+
18
+    <updated>{{ time_now|xmldatetime }}</updated>
19
+
20
+    <id>{{ content_url(resource.url) }}/</id>
21
+
22
+    {% for res in resource.node.walk_resources_sorted_by_time() %}
23
+        <entry>
24
+            <title type="html">{{ res.meta.title|forceescape }}</title>
25
+            <author><name>{{ res.meta.author }}</name></author>
26
+            <link href="{{ content_url(res.url) }}"/>
27
+            <updated>{{ res.meta.created|xmldatetime }}</updated>
28
+            <published>{{ res.meta.created|xmldatetime }}</published>
29
+            <id>{{ content_url(res.url) }}</id>
30
+            {% for tag in res.meta.tags %}
31
+            <category   scheme="{{ content_url('blog/tags') }}"
32
+                        term="{{tag}}"
33
+                        label="{{ tag|title }}" />
34
+            {% endfor %}
35
+
36
+            <content type="html">
37
+                {% refer to res.relative_path as article -%}
38
+                {% filter forceescape -%}
39
+                {% if resource.meta.excerpts_only -%}
40
+                {{ article.image|markdown|typogrify }}
41
+                {{ article.excerpt|markdown|typogrify }}
42
+                {%- else %}
43
+                {{ article.post|markdown|typogrify }}
44
+                {%- endif %}
45
+                {%- endfilter %}
46
+            </content>
47
+        </entry>
48
+    {% endfor %}
49
+</feed>

+ 94
- 0
layout/base.j2 View File

@@ -0,0 +1,94 @@
1
+<!doctype html>
2
+<!-- https://github.com/paulirish/html5-boilerplate/blob/master/index.html -->
3
+<!-- paulirish.com/2008/conditional-stylesheets-vs-css-hacks-answer-neither/ -->
4
+<!--[if (gte IE 9)|!(IE)]><!--> <html lang="en" class="no-js"> <!--<![endif]-->
5
+<head>
6
+  {% block starthead %}{% endblock starthead %}
7
+  <meta charset="{{ resource.meta.charset }}">
8
+
9
+  <!-- Always force latest IE rendering engine (even in intranet) & Chrome Frame
10
+       Remove this if you use the .htaccess -->
11
+  <meta http-equiv="X-UA-Compatible" content="{{ resource.meta.compatibility }}">
12
+
13
+  <!-- encoding must be specified within the first 512 bytes
14
+        www.whatwg.org/specs/web-apps/current-work/multipage/semantics.html#charset -->
15
+
16
+  <!-- meta element for compatibility mode needs to be before
17
+        all elements except title & meta
18
+        msdn.microsoft.com/en-us/library/cc288325(VS.85).aspx -->
19
+  <!-- Chrome Frame is only invoked if meta element for
20
+        compatibility mode is within the first 1K bytes
21
+        code.google.com/p/chromium/issues/detail?id=23003 -->
22
+
23
+  <title>{% block title %}{{ resource.meta.title }}{% endblock %}</title>
24
+  <meta name="description" content="{{ resource.meta.description }}">
25
+  <meta name="author" content="{{ resource.meta.author }}">
26
+
27
+  <!--  Mobile viewport optimized: j.mp/bplateviewport -->
28
+  <meta name="viewport" content="{{ resource.meta.viewport }}">
29
+
30
+  {% block favicons %}
31
+  <!-- Place favicon.ico & apple-touch-icon.png
32
+        in the root of your domain and delete these references -->
33
+  <link rel="shortcut icon" href="{{ media_url('/images/favicon.ico') }}">
34
+  <link rel="apple-touch-icon" href="{{ media_url('/images/apple-touch-icon.png') }}">
35
+  {% endblock favicons %}
36
+
37
+  {% block css %}
38
+  <link rel="stylesheet" href="{{ media_url('css/site.css') }}">
39
+  <link rel="stylesheet" href="{{ media_url('css/syntax.css') }}">
40
+  {% endblock css %}
41
+
42
+  {% block headjs %}
43
+  <!-- All JavaScript at the bottom, except for Modernizr which
44
+        enables HTML5 elements & feature detects -->
45
+    <script src="{{ media_url('js/libs/modernizr-1.7.min.js') }}"></script>
46
+  {% endblock headjs %}
47
+  {% block endhead %}{% endblock endhead %}
48
+</head>
49
+<body id="{{ resource.meta.id if resource.meta.id else resource.slug }}">
50
+  {% block content %}
51
+  <div id="container">
52
+      {% block container %}
53
+      <div id="main" role="main">
54
+          <header class="banner clearfix">
55
+          {% block header -%}
56
+            <h1>BaySec</h1>
57
+            <h3>SF Bay Area Security Professional Meetup</h3>
58
+          {%- endblock %}
59
+          </header>
60
+          <section class="content">
61
+          {% block main %}
62
+          {% endblock main %}
63
+          </section>
64
+      </div>
65
+    {% endblock container %}
66
+  </div> <!--! end of #container -->
67
+  <footer>
68
+      Powered by <a href="https://github.com/hyde/hyde">hyde</a>.
69
+  </footer>
70
+  {% endblock content%}
71
+  {% block js %}
72
+  <!-- Javascript at the bottom for fast page loading -->
73
+  {% block jquery %}
74
+  <!-- Grab Google CDN's jQuery, with a protocol relative URL; fall back to local if necessary -->
75
+  <script src="//ajax.googleapis.com/ajax/libs/jquery/1.5.1/jquery.js"></script>
76
+  <script>window.jQuery || document.write('<script src="js/libs/jquery-1.5.1.min.js">\x3C/script>')</script>
77
+  {% endblock jquery %}
78
+
79
+  {% block scripts %}
80
+  {% endblock scripts %}
81
+
82
+
83
+  <!--[if lt IE 7 ]>
84
+    <script src="js/libs/dd_belatedpng.js"></script>
85
+    <script>DD_belatedPNG.fix('img, .png_bg'); // Fix any <img> or .png_bg bg-images. Also, please read goo.gl/mZiyb </script>
86
+  <![endif]-->
87
+
88
+  {% block analytics %}
89
+  {% include "analytics.j2" %}
90
+  {% endblock analytics %}
91
+
92
+  {% endblock js %}
93
+</body>
94
+</html>

+ 67
- 0
layout/blog.j2 View File

@@ -0,0 +1,67 @@
1
+{% extends "base.j2" %}
2
+
3
+{% block main -%}
4
+<article class="post">
5
+<nav class="post_nav">
6
+<a class="backlink" href="/">Back to list</a>
7
+<a class="prev{{' disabled' if not resource.prev_by_time }}"
8
+    title="{{ resource.prev_by_time.meta.title }}"
9
+    {% if resource.prev_by_time %}
10
+    href="{{ content_url(resource.prev_by_time.url) }}"{% endif %}>
11
+    Previous
12
+</a>
13
+
14
+<a class="next{{' disabled' if not resource.next_by_time }}"
15
+    title="{{ resource.next_by_time.meta.title }}"
16
+    {% if resource.next_by_time %}
17
+    href="{{ content_url(resource.next_by_time.url) }}"{% endif %}>
18
+    Next
19
+</a>
20
+
21
+<br>
22
+<div id="twitter_share">
23
+<a href="https://twitter.com/share"
24
+    class="twitter-share-button"
25
+    data-count="vertical"
26
+    data-via="{{ tweet_via }}">Tweet</a>
27
+    <script type="text/javascript"
28
+        src="https://platform.twitter.com/widgets.js"></script>
29
+</div>
30
+<div id="facebook_like">
31
+<iframe src="https://www.facebook.com/plugins/like.php?href&amp;layout=box_count&amp;show_faces=false&amp;width=450&amp;action=like&amp;font=arial&amp;colorscheme=light&amp;height=65"
32
+            scrolling="no"
33
+            frameborder="0"
34
+            style="border:none; overflow:hidden; width:450px; height:65px;"
35
+            allowTransparency="true"></iframe>
36
+</div>
37
+</nav>
38
+<h1 class="title">
39
+    <a href="{{ content_url(resource.url) }}">
40
+        {{ resource.meta.title }}
41
+    </a>
42
+</h1>
43
+<time datetime="{{ resource.meta.created.strftime('%Y-%m-%d') }}">
44
+    Posted: {{ resource.meta.created.strftime('%a, %d %b %Y') }}
45
+</time>
46
+
47
+{% if resource.meta.tags %}
48
+<ul class="tags clear">
49
+{% for tag in resource.meta.tags %}
50
+<li>
51
+    <a class="small" href="{{ content_url('blog/tags/'~tag~'.html') }}">
52
+        {{ tag }}
53
+    </a>
54
+</li>
55
+{% endfor %}
56
+</ul>
57
+{% endif %}
58
+<div class="clear"/>
59
+<br/>
60
+{% filter markdown|typogrify -%}
61
+{% mark post -%}
62
+{% block post -%}{%- endblock %}
63
+{%- endmark %}
64
+{%- endfilter %}
65
+</article>
66
+
67
+{%- endblock %}

+ 4
- 0
layout/devmode.j2 View File

@@ -0,0 +1,4 @@
1
+{%if not site.config.mode == "production" %}
2
+<script src="js/profiling/yahoo-profiling.min.js"></script>
3
+<script src="js/profiling/config.js"></script>
4
+{% endif %}

+ 13
- 0
layout/listing.j2 View File

@@ -0,0 +1,13 @@
1
+{% extends "base.j2" %}
2
+{% from "macros.j2" import render_link with context  %}
3
+{% block main %}
4
+{% block page_title %}<h1 class="title">{{ resource.meta.title }}</h1>{% endblock %}
5
+
6
+<ul class="listing clearfix">
7
+{% for res in resource.node.walk_resources_sorted_by_time() %}
8
+<li>
9
+    {{ render_link(res) }}
10
+</li>
11
+{% endfor %}
12
+</ul>
13
+{% endblock %}

+ 45
- 0
layout/macros.j2 View File

@@ -0,0 +1,45 @@
1
+{% macro render_link(res, class=None) %}
2
+{% refer to res.relative_path as post %}
3
+<h3><a href="{{ content_url(res.url) }}">{{ res.meta.title }}</a></h3>
4
+{% endmacro %}
5
+
6
+{% macro render_excerpt(res, class=None) %}
7
+{% refer to res.relative_path as post %}
8
+<article {{'class='~class if class }}>
9
+<h3><a href="{{ content_url(res.url) }}">{{ res.meta.title }}</a></h3>
10
+<a href="{{ content_url(res.url) }}">{{ post.image|markdown|typogrify }}</a>
11
+{{ post.excerpt|markdown|typogrify }}
12
+<time datetime="{{ res.meta.created.strftime('%Y-%m-%d') }}">
13
+    Posted: {{ res.meta.created.strftime('%a, %d %b %Y') }}
14
+</time>
15
+</article>
16
+{% endmacro %}
17
+
18
+{% macro render_nav(menu, cls=None) -%}
19
+{% if menu -%}
20
+<nav {{'class='~cls if cls }}>
21
+    <ul>
22
+        {% for item in menu -%}
23
+        {% set active = False -%}
24
+        {% if item.type == 'page' -%}
25
+            {% set active = (resource.url ==
26
+                site.content.resource_from_relative_path(item.url).url) -%}
27
+        {% else -%}
28
+            {% set active = (node ==
29
+                site.content.node_from_relative_path(item.url)) -%}
30
+        {%- endif %}
31
+        {% set classes = ['button', 'white'] -%}
32
+        {% do classes.append('active') if active -%}
33
+        {% do classes.append(item.css_class) if item.css_class -%}
34
+        <li>
35
+            <a title="{{ item.description }}"
36
+                class="{{ classes|join(' ') }}"
37
+                href="{{ content_url(item.url) }}">
38
+                {{ item.name }}
39
+            </a>
40
+        </li>
41
+        {%- endfor %}
42
+    </ul>
43
+</nav>
44
+{%- endif %}
45
+{%- endmacro %}

+ 1
- 0
notes.txt View File

@@ -0,0 +1 @@
1
+For debugging: http://stackoverflow.com/questions/13436841/display-all-jinja-object-attributes

+ 31
- 0
site.yaml View File

@@ -0,0 +1,31 @@
1
+mode: development
2
+media_root: media # Relative path from content folder.
3
+media_url: /media # URL where the media files are served from.
4
+base_url: / # The base url for autogenerated links.
5
+plugins:
6
+    - hyde.ext.plugins.meta.MetaPlugin
7
+    - hyde.ext.plugins.meta.AutoExtendPlugin
8
+    - hyde.ext.plugins.meta.SorterPlugin
9
+    - hyde.ext.plugins.text.SyntextPlugin
10
+    - hyde.ext.plugins.text.TextlinksPlugin
11
+context:
12
+    data:
13
+        tweet_via: encthenet
14
+meta:
15
+    nodemeta: meta.yaml
16
+    created: !!timestamp 2010-01-01 00:00:00
17
+    author: John-Mark Gurney
18
+sorter:
19
+    time:
20
+        attr:
21
+            - meta.created
22
+        reverse: true
23
+        filters:
24
+            source.kind: html
25
+            meta.listable: true
26
+publisher:
27
+    github:
28
+        type: hyde.ext.publishers.dvcs.Git
29
+        path: .
30
+        url: git@github.com:baysec/baysec.git
31
+        branch: gh-pages

Loading…
Cancel
Save