installed octopress classic theme
5
sass/_base.scss
Normal file
@ -0,0 +1,5 @@
|
||||
@import "base/utilities";
|
||||
@import "base/solarized";
|
||||
@import "base/theme";
|
||||
@import "base/typography";
|
||||
@import "base/layout";
|
8
sass/_partials.scss
Normal file
@ -0,0 +1,8 @@
|
||||
@import "partials/header";
|
||||
@import "partials/navigation";
|
||||
@import "partials/blog";
|
||||
@import "partials/sharing";
|
||||
@import "partials/syntax";
|
||||
@import "partials/archive";
|
||||
@import "partials/sidebar";
|
||||
@import "partials/footer";
|
155
sass/base/_layout.scss
Normal file
@ -0,0 +1,155 @@
|
||||
$max-width: 1200px !default;
|
||||
|
||||
// Padding used for layout margins
|
||||
$pad-min: 18px !default;
|
||||
$pad-narrow: 25px !default;
|
||||
$pad-medium: 35px !default;
|
||||
$pad-wide: 55px !default;
|
||||
|
||||
// Sidebar widths used in media queries
|
||||
$sidebar-width-medium: 240px !default;
|
||||
$sidebar-pad-medium: 15px !default;
|
||||
$sidebar-pad-wide: 20px !default;
|
||||
$sidebar-width-wide: 300px !default;
|
||||
|
||||
$indented-lists: false !default;
|
||||
|
||||
.group { @include pie-clearfix; }
|
||||
|
||||
@mixin collapse-sidebar {
|
||||
float: none;
|
||||
width: auto;
|
||||
clear: left;
|
||||
margin: 0;
|
||||
padding: 0 $pad-medium 1px;
|
||||
background-color: lighten($sidebar-bg, 2);
|
||||
border-top: 1px solid lighten($sidebar-border, 4);
|
||||
section {
|
||||
&.odd, &.even { float: left; width: 48%; }
|
||||
&.odd { margin-left: 0; }
|
||||
&.even { margin-left: 4%; }
|
||||
}
|
||||
&.thirds section {
|
||||
width: 30%;
|
||||
margin-left: 5%;
|
||||
&.first { margin-left: 0; }
|
||||
}
|
||||
}
|
||||
|
||||
body {
|
||||
-webkit-text-size-adjust: none;
|
||||
max-width: $max-width;
|
||||
position: relative;
|
||||
margin: 0 auto;
|
||||
> header, > nav, > footer, #content > article, #content > div > article, #content > div > section, nav[role=pagination] {
|
||||
@extend .group;
|
||||
padding-left: $pad-min;
|
||||
padding-right: $pad-min;
|
||||
@media only screen and (min-width: 480px) {
|
||||
padding-left: $pad-narrow;
|
||||
padding-right: $pad-narrow;
|
||||
}
|
||||
@media only screen and (min-width: 768px) {
|
||||
padding-left: $pad-medium;
|
||||
padding-right: $pad-medium;
|
||||
}
|
||||
@media only screen and (min-width: 992px) {
|
||||
padding-left: $pad-wide;
|
||||
padding-right: $pad-wide;
|
||||
}
|
||||
}
|
||||
> header {
|
||||
font-size: 1em;
|
||||
padding-top: 1.5em;
|
||||
padding-bottom: 1.5em;
|
||||
}
|
||||
}
|
||||
|
||||
#content { > div, > article { width: 100%; }}
|
||||
|
||||
aside[role=sidebar] {
|
||||
float: none;
|
||||
padding: 0 $pad-min 1px;
|
||||
background-color: lighten($sidebar-bg, 2);
|
||||
border-top: 1px solid $sidebar-border;
|
||||
@extend .group;
|
||||
}
|
||||
|
||||
.toggle-sidebar { &, .no-sidebar & { display: none; }}
|
||||
|
||||
body.sidebar-footer {
|
||||
@media only screen and (min-width: 750px) {
|
||||
aside[role=sidebar]{ @include collapse-sidebar; }
|
||||
}
|
||||
#content { margin-right: 0px; }
|
||||
.toggle-sidebar { display: none; }
|
||||
}
|
||||
|
||||
@media only screen and (min-width: 550px) {
|
||||
body > header { font-size: 1em; }
|
||||
}
|
||||
@media only screen and (min-width: 750px) {
|
||||
aside[role=sidebar] { @include collapse-sidebar; }
|
||||
}
|
||||
@media only screen and (min-width: 768px) {
|
||||
body { -webkit-text-size-adjust: auto; }
|
||||
body > header { font-size: 1.2em; }
|
||||
#main {
|
||||
@extend .group;
|
||||
padding: 0;
|
||||
margin: 0 auto;
|
||||
}
|
||||
#content {
|
||||
@extend .group;
|
||||
margin-right: $sidebar-width-medium;
|
||||
position: relative;
|
||||
.no-sidebar & { margin-right: 0; }
|
||||
.collapse-sidebar & { margin-right: 20px; }
|
||||
> div, > article {
|
||||
padding-top: $pad-medium/2;
|
||||
padding-bottom: $pad-medium/2;
|
||||
float: left;
|
||||
}
|
||||
}
|
||||
aside[role=sidebar] {
|
||||
@extend .group;
|
||||
width: $sidebar-width-medium - $sidebar-pad-medium*2;
|
||||
padding: 0 $sidebar-pad-medium $sidebar-pad-medium;
|
||||
background: none;
|
||||
clear: none;
|
||||
float: left;
|
||||
margin: 0 -100% 0 0;
|
||||
section {
|
||||
width: auto; margin-left: 0;
|
||||
&.odd, &.even { float: none; width: auto; margin-left: 0; }
|
||||
}
|
||||
.collapse-sidebar & {
|
||||
@include collapse-sidebar;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@media only screen and (min-width: 992px) {
|
||||
body > header { font-size: 1.3em; }
|
||||
#content { margin-right: $sidebar-width-wide; }
|
||||
#content {
|
||||
> div, > article {
|
||||
padding-top: $pad-wide/2;
|
||||
padding-bottom: $pad-wide/2;
|
||||
}
|
||||
}
|
||||
aside[role=sidebar] {
|
||||
width: $sidebar-width-wide - $sidebar-pad-wide*2;
|
||||
padding: 1.2em $sidebar-pad-wide $sidebar-pad-wide;
|
||||
.collapse-sidebar & {
|
||||
padding: { left: $pad-wide; right: $pad-wide; }
|
||||
@extend .group;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@if $indented-lists == false {
|
||||
@media only screen and (min-width: 768px) {
|
||||
ul, ol { margin-left: 0; }
|
||||
}
|
||||
}
|
18
sass/base/_solarized.scss
Normal file
@ -0,0 +1,18 @@
|
||||
$base03: #002b36; //darkest blue
|
||||
$base02: #073642; //dark blue
|
||||
$base01: #586e75; //darkest gray
|
||||
$base00: #657b83; //dark gray
|
||||
$base0: #839496; //medium gray
|
||||
$base1: #93a1a1; //medium light gray
|
||||
$base2: #eee8d5; //cream
|
||||
$base3: #fdf6e3; //white
|
||||
$yellow: #b58900;
|
||||
$orange: #cb4b16;
|
||||
$red: #dc322f;
|
||||
$magenta: #d33682;
|
||||
$violet: #6c71c4;
|
||||
$blue: #268bd2;
|
||||
$cyan: #2aa198;
|
||||
$green: #859900;
|
||||
|
||||
$pre-bg: $base03 !default;
|
88
sass/base/_theme.scss
Normal file
@ -0,0 +1,88 @@
|
||||
$noise-bg: image-url('noise.png') top left;
|
||||
$img-border: inline-image('dotted-border.png');
|
||||
|
||||
// Main Link Colors
|
||||
$link-color: lighten(#165b94, 3) !default;
|
||||
$link-color-hover: adjust-color($link-color, $lightness: 10, $saturation: 25) !default;
|
||||
$link-color-visited: adjust-color($link-color, $hue: 80, $lightness: -4) !default;
|
||||
$link-color-active: adjust-color($link-color-hover, $lightness: -15) !default;
|
||||
|
||||
// Main Section Colors
|
||||
$main-bg: #f8f8f8 !default;
|
||||
$page-bg: #252525 !default;
|
||||
$article-border: #eeeeee !default;
|
||||
|
||||
$header-bg: #333 !default;
|
||||
$header-border: lighten($header-bg, 15) !default;
|
||||
$title-color: #f2f2f2 !default;
|
||||
$subtitle-color: #aaa !default;
|
||||
|
||||
$text-color: #222 !default;
|
||||
$text-color-light: #aaa !default;
|
||||
$type-border: #ddd !default;
|
||||
|
||||
/* non highlighted code colors */
|
||||
$pre-bg: $base03 !default;
|
||||
$pre-border: $base02 !default;
|
||||
$pre-color: $base1 !default;
|
||||
|
||||
/* Navigation */
|
||||
$nav-bg: #ccc !default;
|
||||
$nav-color: darken($nav-bg, 38) !default;
|
||||
$nav-color-hover: darken($nav-color, 25) !default;
|
||||
$nav-placeholder: desaturate(darken($nav-bg, 10), 15) !default;
|
||||
$nav-border: darken($nav-bg, 10) !default;
|
||||
$nav-border-top: lighten($nav-bg, 15) !default;
|
||||
$nav-border-bottom: darken($nav-bg, 25) !default;
|
||||
$nav-border-left: darken($nav-bg, 11) !default;
|
||||
$nav-border-right: lighten($nav-bg, 7) !default;
|
||||
|
||||
/* Sidebar colors */
|
||||
$sidebar-bg: #f2f2f2 !default;
|
||||
$sidebar-link-color: $link-color !default;
|
||||
$sidebar-link-color-hover: $link-color-hover !default;
|
||||
$sidebar-link-color-active: $link-color-active !default;
|
||||
$sidebar-color: change-color(mix($text-color, $sidebar-bg, 80), $hue: hue($sidebar-bg), $saturation: saturation($sidebar-bg)/2) !default;
|
||||
$sidebar-border: desaturate(darken($sidebar-bg, 7), 10) !default;
|
||||
$sidebar-border: darken($sidebar-bg, 7) !default;
|
||||
$sidebar-link-color-subdued: lighten($sidebar-color, 20) !default;
|
||||
$sidebar-link-color-subdued-hover: $sidebar-link-color-hover !default;
|
||||
$twitter-status-link: lighten($sidebar-link-color-subdued, 15) !default;
|
||||
|
||||
$footer-color: #888 !default;
|
||||
$footer-bg: #ccc !default;
|
||||
$footer-color: darken($footer-bg, 38) !default;
|
||||
$footer-color-hover: darken($footer-color, 10) !default;
|
||||
$footer-border-top: lighten($footer-bg, 15) !default;
|
||||
$footer-border-bottom: darken($footer-bg, 15) !default;
|
||||
$footer-link-color: darken($footer-bg, 38) !default;
|
||||
$footer-link-color-hover: darken($footer-color, 25) !default;
|
||||
$page-border-bottom: darken($footer-bg, 5) !default;
|
||||
|
||||
|
||||
/* Core theme application */
|
||||
|
||||
a {
|
||||
@include link-colors($link-color, $hover: $link-color-hover, $focus: $link-color-hover, $visited: $link-color-visited, $active: $link-color-active);
|
||||
}
|
||||
aside[role=sidebar] a {
|
||||
@include link-colors($sidebar-link-color, $hover: $sidebar-link-color-hover, $focus: $sidebar-link-color-hover, $active: $sidebar-link-color-active);
|
||||
}
|
||||
a {
|
||||
@include transition(color .3s);
|
||||
}
|
||||
|
||||
html {
|
||||
background: $page-bg image-url('line-tile.png') top left;
|
||||
}
|
||||
body {
|
||||
> div {
|
||||
background: $sidebar-bg $noise-bg;
|
||||
border-bottom: 1px solid $page-border-bottom;
|
||||
> div {
|
||||
background: $main-bg $noise-bg;
|
||||
border-right: 1px solid $sidebar-border;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
137
sass/base/_typography.scss
Normal file
@ -0,0 +1,137 @@
|
||||
$blockquote: $type-border !default;
|
||||
$mono: Menlo, Monaco, "Andale Mono", "lucida console", "Courier New", monospace;
|
||||
|
||||
// Fonts
|
||||
.heading {
|
||||
font-family: "PT Serif", "Georgia", "Helvetica Neue", Arial, sans-serif;
|
||||
}
|
||||
.sans { font-family: "PT Sans", "Helvetica Neue", Arial, sans-serif; }
|
||||
.serif { font-family: "PT Serif", Georgia, Times, "Times New Roman", serif; }
|
||||
.mono { font-family: $mono; }
|
||||
|
||||
body > header h1 {
|
||||
font-size: 2.2em;
|
||||
@extend .heading;
|
||||
font-weight: normal;
|
||||
line-height: 1.2em;
|
||||
margin-bottom: 0.6667em;
|
||||
}
|
||||
|
||||
body {
|
||||
line-height: 1.5em;
|
||||
color: $text-color;
|
||||
@extend .serif;
|
||||
}
|
||||
h1 {
|
||||
font-size: 2.2em;
|
||||
line-height: 1.2em;
|
||||
}
|
||||
|
||||
@media only screen and (min-width: 992px) {
|
||||
body { font-size: 1.15em; }
|
||||
h1 { font-size: 3em; line-height: 1.2em; }
|
||||
}
|
||||
|
||||
#{headings()}{
|
||||
@extend .heading;
|
||||
text-rendering: optimizelegibility;
|
||||
margin-bottom: 1em;
|
||||
font-weight: bold;
|
||||
}
|
||||
h2, section h1 {
|
||||
font-size: 1.5em;
|
||||
}
|
||||
h3, section h2, section section h1 {
|
||||
font-size: 1.3em;
|
||||
}
|
||||
h4, section h3, section section h2, section section section h1 {
|
||||
font-size: 1em;
|
||||
}
|
||||
h5, section h4, section section h3 {
|
||||
font-size: .9em;
|
||||
}
|
||||
h6, section h5, section section h4, section section section h3 {
|
||||
font-size: .8em;
|
||||
}
|
||||
p, blockquote, ul, ol { margin-bottom: 1.5em; }
|
||||
|
||||
ul { list-style-type: disc;
|
||||
ul { list-style-type: circle;
|
||||
ul { list-style-type: square; }}}
|
||||
|
||||
ol { list-style-type: decimal;
|
||||
ol { list-style-type: lower-alpha;
|
||||
ol { list-style-type: lower-roman; }}}
|
||||
|
||||
ul, ol { &, ul, ol { margin-left: 1.3em; }}
|
||||
|
||||
strong { font-weight: bold; }
|
||||
|
||||
em { font-style: italic; }
|
||||
|
||||
sup, sub { font-size: 0.8em; position: relative; display: inline-block; }
|
||||
sup { top: -.5em; }
|
||||
sub { bottom: -.5em; }
|
||||
|
||||
q { font-style: italic;
|
||||
&:before { content: "\201C"; }
|
||||
&:after { content: "\201D"; }
|
||||
}
|
||||
|
||||
em, dfn { font-style: italic; }
|
||||
|
||||
strong, dfn { font-weight: bold; }
|
||||
|
||||
del, s { text-decoration: line-through; }
|
||||
|
||||
abbr, acronym { border-bottom: 1px dotted; cursor: help; }
|
||||
|
||||
pre, code, tt { @extend .mono-font; }
|
||||
|
||||
sub, sup { line-height: 0; }
|
||||
|
||||
hr { margin-bottom: 0.2em; }
|
||||
|
||||
small { font-size: .8em; }
|
||||
|
||||
big { font-size: 1.2em; }
|
||||
|
||||
blockquote {
|
||||
$bq-margin: 1.2em;
|
||||
font-style: italic;
|
||||
position: relative;
|
||||
font-size: 1.2em;
|
||||
line-height: 1.5em;
|
||||
padding-left: 1em;
|
||||
border-left: 4px solid rgba($text-color-light, .5);
|
||||
cite {
|
||||
font-style: italic;
|
||||
a { color: $text-color-light !important; word-wrap: break-word; }
|
||||
&:before { content: '–'; padding:{right: .3em; left: .3em;} color: $text-color-light; }
|
||||
}
|
||||
@media only screen and (min-width: 992px) {
|
||||
padding-left: 1.5em;
|
||||
border-left-width: 4px;
|
||||
}
|
||||
}
|
||||
|
||||
.has-pullquote:before {
|
||||
/* Reset metrics. */
|
||||
padding: 0;
|
||||
border: none;
|
||||
|
||||
/* Content */
|
||||
content: attr(data-pullquote);
|
||||
|
||||
/* Pull out to the right, modular scale based margins. */
|
||||
float: right;
|
||||
width: 45%;
|
||||
margin: .5em 0 1em 1.5em;
|
||||
|
||||
/* Baseline correction */
|
||||
position: relative;
|
||||
top: 7px;
|
||||
font-size: 1.4em;
|
||||
line-height: 1.45em;
|
||||
}
|
||||
|
21
sass/base/_utilities.scss
Normal file
@ -0,0 +1,21 @@
|
||||
@mixin mask-image($img, $repeat: no-repeat){
|
||||
@include experimental(mask-image, image-url($img), -webkit, -moz, -o, -ms);
|
||||
@include experimental(mask-repeat, $repeat, -webkit, -moz, -o, -ms);
|
||||
width: image-width($img);
|
||||
height: image-height($img);
|
||||
}
|
||||
|
||||
@mixin selection($bg, $color: inherit, $text-shadow: none){
|
||||
* {
|
||||
&::-moz-selection { background: $bg; color: $color; text-shadow: $text-shadow; }
|
||||
&::-webkit-selection { background: $bg; color: $color; text-shadow: $text-shadow; }
|
||||
&::selection { background: $bg; color: $color; text-shadow: $text-shadow; }
|
||||
}
|
||||
}
|
||||
|
||||
@function text-color($color, $dark: dark, $light: light){
|
||||
$text-color: ( (red($color)*299) + (green($color)*587) + (blue($color)*114) ) / 1000;
|
||||
$text-color: if($text-color >= 150, $dark, $light);
|
||||
@return $text-color;
|
||||
}
|
||||
|
20
sass/custom/_colors.scss
Normal file
@ -0,0 +1,20 @@
|
||||
// Here you can easily change your sites's color scheme.
|
||||
// To give it a try, uncomment some of the lines below rebuild your blog, and see how it works.
|
||||
|
||||
//$header-bg: #263347;
|
||||
//$subtitle-color: lighten($header-bg, 58);
|
||||
//$nav-bg: desaturate(lighten(#8fc17a, 18), 5);
|
||||
//$sidebar-bg: desaturate(#eceff5, 8);
|
||||
//$sidebar-link-color: saturate(#526f9a, 10);
|
||||
//$sidebar-link-color-hover: darken(#7ab662, 9);
|
||||
|
||||
|
||||
//To use the light Solarized highlighting theme uncomment this block
|
||||
//$base03: $base3;
|
||||
//$base02: $base2;
|
||||
//$base01: $base1;
|
||||
//$base00: $base0;
|
||||
//$base0: $base00;
|
||||
//$base1: $base01;
|
||||
//$base2: $base02;
|
||||
//$base3: $base03;
|
17
sass/custom/_layout.scss
Normal file
@ -0,0 +1,17 @@
|
||||
// Here you can easily change your sites's layout.
|
||||
// To give it a try, uncomment some of the lines below, make changes, rebuild your blog, and see how it works.
|
||||
|
||||
//$max-width: 1350px;
|
||||
//$indented-lists: true;
|
||||
|
||||
// Padding used for layout margins
|
||||
//$pad-min: 18px;
|
||||
//$pad-narrow: 25px;
|
||||
//$pad-medium: 35px;
|
||||
//$pad-wide: 55px;
|
||||
|
||||
// Sidebar widths used in media queries
|
||||
//$sidebar-width-medium: 240px;
|
||||
//$sidebar-pad-medium: 15px;
|
||||
//$sidebar-pad-wide: 20px;
|
||||
//$sidebar-width-wide: 300px;
|
2
sass/custom/_styles.scss
Normal file
@ -0,0 +1,2 @@
|
||||
// This File is imported last, and will override other styles in the cascade
|
||||
// Add styles here to make changes without digging in too much
|
72
sass/partials/_archive.scss
Normal file
@ -0,0 +1,72 @@
|
||||
#archive {
|
||||
#content > div { &, > article { padding-top: 0; } }
|
||||
}
|
||||
#blog-archives {
|
||||
article {
|
||||
padding: 1em 0 1em;
|
||||
position: relative;
|
||||
background: $img-border bottom left repeat-x;
|
||||
&:last-child {
|
||||
background: none;
|
||||
}
|
||||
footer { padding: 0; margin: 0;}
|
||||
}
|
||||
h1 { color: $text-color; margin-bottom: .3em; }
|
||||
h2 { display: none; }
|
||||
h1 {
|
||||
font-size: 1.5em;
|
||||
a {
|
||||
@include hover-link;
|
||||
color: inherit;
|
||||
&:hover { color: $link-color-hover; }
|
||||
font-weight: normal;
|
||||
display: inline-block;
|
||||
}
|
||||
}
|
||||
a.category, time {
|
||||
@extend .sans;
|
||||
color: $text-color-light;
|
||||
}
|
||||
color: $text-color-light;
|
||||
.entry-content { display: none; }
|
||||
time {
|
||||
font-size: .9em;
|
||||
line-height: 1.2em;
|
||||
.month, .day { display: inline-block; }
|
||||
.month { text-transform: uppercase; }
|
||||
}
|
||||
p { margin-bottom: 1em; }
|
||||
&, .entry-content { a { @include link-colors(inherit, $link-color-hover); }}
|
||||
a:hover { color: $link-color-hover; }
|
||||
@media only screen and (min-width: 550px) {
|
||||
article { margin-left: 5em; }
|
||||
h2 {
|
||||
margin-bottom: .3em;
|
||||
font-weight: normal;
|
||||
display: inline-block;
|
||||
position: relative; top: -1px;
|
||||
float: left;
|
||||
&:first-child { padding-top: .75em; }
|
||||
}
|
||||
time {
|
||||
position: absolute;
|
||||
text-align: right;
|
||||
left: 0em;
|
||||
top: 1.8em;
|
||||
}
|
||||
.year { display: none; }
|
||||
article {
|
||||
padding:{left: 4.5em; bottom: .7em;}
|
||||
}
|
||||
a.category {
|
||||
line-height: 1.1em;
|
||||
}
|
||||
}
|
||||
}
|
||||
#content > .category {
|
||||
article {
|
||||
margin-left: 0;
|
||||
padding-left: 6.8em;
|
||||
}
|
||||
.year { display: inline; }
|
||||
}
|
146
sass/partials/_blog.scss
Normal file
@ -0,0 +1,146 @@
|
||||
article {
|
||||
overflow: hidden;
|
||||
padding-top: 1em;
|
||||
header {
|
||||
position: relative;
|
||||
padding-top: 2em;
|
||||
padding-bottom: 1em;
|
||||
margin-bottom: 1em;
|
||||
background: $img-border bottom left repeat-x;
|
||||
h1 {
|
||||
margin: 0;
|
||||
a { text-decoration: none;
|
||||
&:hover { text-decoration: underline; } }
|
||||
}
|
||||
p {
|
||||
font-size: .9em;
|
||||
color: $text-color-light;
|
||||
margin: 0;
|
||||
&.meta {
|
||||
@extend .sans;
|
||||
text-transform: uppercase;
|
||||
position: absolute; top: 0;
|
||||
}
|
||||
}
|
||||
@media only screen and (min-width: 768px) {
|
||||
margin-bottom: 1.5em;
|
||||
padding-bottom: 1em;
|
||||
background: $img-border bottom left repeat-x;
|
||||
}
|
||||
}
|
||||
h2 {
|
||||
padding-top: 0.8em;
|
||||
background: $img-border top left repeat-x;
|
||||
}
|
||||
.entry-content & h2:first-child, header + h2 { padding-top: 0; }
|
||||
h2:first-child, header + h2 { background: none; }
|
||||
.feature {
|
||||
padding-top: .5em;
|
||||
margin-bottom: 1em;
|
||||
padding-bottom: 1em;
|
||||
background: $img-border bottom left repeat-x;
|
||||
font-size: 2.0em; font-style: italic;
|
||||
line-height: 1.3em;
|
||||
}
|
||||
.entry-content {
|
||||
img, video { max-width: 100%; height: auto; }
|
||||
video {
|
||||
width: 100%; display: block; margin-bottom: 1.5em;
|
||||
padding: .8em; background: #fff; border: 1px solid #eee;
|
||||
@include box-sizing(border-box);
|
||||
}
|
||||
}
|
||||
.flash-video {
|
||||
max-width: 100%;
|
||||
margin-bottom: 1.5em;
|
||||
@include box-sizing(border-box);
|
||||
padding: .8em; background: #fff; border: 1px solid #eee;
|
||||
> div {
|
||||
position: relative;
|
||||
display: block;
|
||||
padding-bottom: 56.25%;
|
||||
padding-top: 1px;
|
||||
height: 0;
|
||||
overflow: hidden;
|
||||
iframe, object, embed {
|
||||
position: absolute;
|
||||
top: 0;
|
||||
left: 0;
|
||||
width: 100%;
|
||||
height: 100%;
|
||||
}
|
||||
}
|
||||
}
|
||||
> footer {
|
||||
padding-bottom: 2.5em;
|
||||
margin-top: 2em;
|
||||
@extend .sans;
|
||||
p.meta {
|
||||
margin-bottom: .8em;
|
||||
font-size: .85em;
|
||||
}
|
||||
.byline + time:before, time +time:before, .comments:before, .byline ~ .categories:before {
|
||||
@extend .separator;
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
article + article {
|
||||
.blog-index & {
|
||||
background: $img-border top left repeat-x;
|
||||
}
|
||||
}
|
||||
#content .blog-index {
|
||||
padding: { top: 0; bottom: 0; }
|
||||
article { padding-top: 2em; }
|
||||
article header { background: none; padding-bottom: 0; }
|
||||
article h1 {
|
||||
font-size: 2.2em;
|
||||
a { color: inherit; &:hover { color: $link-color-hover; } }
|
||||
}
|
||||
a[rel=full-article] {
|
||||
background: darken($main-bg, 5);
|
||||
display: inline-block;
|
||||
padding: .4em .8em;
|
||||
margin-right: .5em;
|
||||
text-decoration: none;
|
||||
color: mix($text-color, $text-color-light);
|
||||
@extend .serif;
|
||||
@include transition(background-color .5s);
|
||||
&:hover {
|
||||
background: $link-color-hover;
|
||||
text-shadow: none;
|
||||
color: $main-bg;
|
||||
}
|
||||
}
|
||||
footer {
|
||||
@extend .sans;
|
||||
margin-top: 1em;
|
||||
}
|
||||
}
|
||||
|
||||
.separator {
|
||||
content: "\2022 ";
|
||||
padding: 0 .4em 0 .2em;
|
||||
display: inline-block;
|
||||
}
|
||||
|
||||
#content nav[role=pagination] {
|
||||
text-align: center;
|
||||
font-size: .95em;
|
||||
div {
|
||||
position: relative;
|
||||
background: $img-border top left repeat-x;
|
||||
padding: {top: 1.5em; bottom: 1.5em;}
|
||||
}
|
||||
a {
|
||||
text-decoration: none;
|
||||
color: $text-color-light;
|
||||
&.prev { position: absolute; left: 0; }
|
||||
&.next { position: absolute; right: 0; }
|
||||
&:hover { color: $link-color-hover; }
|
||||
&[href*=archive] {
|
||||
&:before, &:after { content: '\2014'; padding: 0 .3em; }
|
||||
}
|
||||
}
|
||||
}
|
19
sass/partials/_footer.scss
Normal file
@ -0,0 +1,19 @@
|
||||
body > footer {
|
||||
@extend .sans;
|
||||
font-size: .8em;
|
||||
color: $footer-color;
|
||||
text-shadow: lighten($footer-bg, 5) 0 1px;
|
||||
background-color: $footer-bg;
|
||||
@include background(image-url('noise.png'), linear-gradient(lighten($footer-bg, 8), $footer-bg, darken($footer-bg, 11)));
|
||||
border-top: 1px solid $footer-border-top;
|
||||
position: relative;
|
||||
padding-top: 1em;
|
||||
padding-bottom: 1em;
|
||||
margin-bottom: 3em;
|
||||
@include border-bottom-radius(.4em);
|
||||
z-index: 1;
|
||||
a {
|
||||
@include link-colors($footer-link-color, $footer-link-color-hover, $visited: $footer-link-color);
|
||||
}
|
||||
p:last-child { margin-bottom: 0; }
|
||||
}
|
18
sass/partials/_header.scss
Normal file
@ -0,0 +1,18 @@
|
||||
body > header {
|
||||
background: $header-bg;
|
||||
h1 {
|
||||
display: inline-block;
|
||||
margin: 0;
|
||||
a, a:visited, a:hover {
|
||||
color: $title_color;
|
||||
text-decoration: none;
|
||||
}
|
||||
}
|
||||
h2 {
|
||||
margin: .2em 0 0;
|
||||
@extend .sans;
|
||||
font-size: 1em;
|
||||
color: $subtitle-color;
|
||||
font-weight: normal;
|
||||
}
|
||||
}
|
136
sass/partials/_navigation.scss
Normal file
@ -0,0 +1,136 @@
|
||||
body > nav {
|
||||
position: relative;
|
||||
background-color: $nav-bg;
|
||||
@include background(image-url('noise.png'), linear-gradient(lighten($nav-bg, 8), $nav-bg, darken($nav-bg, 11)));
|
||||
border: {
|
||||
top: 1px solid $nav-border-top;
|
||||
bottom: 1px solid $nav-border-bottom; }
|
||||
padding-top: .35em;
|
||||
padding-bottom: .35em;
|
||||
form {
|
||||
@include background-clip(padding-box);
|
||||
margin: 0; padding: 0;
|
||||
.search {
|
||||
padding: .3em .5em 0;
|
||||
font-size: .85em;
|
||||
@extend .sans;
|
||||
line-height: 1.1em;
|
||||
width: 95%;
|
||||
@include border-radius(.5em);
|
||||
@include background-clip(padding-box);
|
||||
@include box-shadow(lighten($nav-bg, 2) 0 1px);
|
||||
background-color: lighten($nav-bg, 15);
|
||||
border: 1px solid $nav-border;
|
||||
color: #888;
|
||||
&:focus {
|
||||
color: #444;
|
||||
border-color: #80b1df;
|
||||
@include box-shadow(#80b1df 0 0 4px, #80b1df 0 0 3px inset);
|
||||
background-color: #fff;
|
||||
outline: none;
|
||||
}
|
||||
}
|
||||
}
|
||||
fieldset[role=site-search]{ float: right; width: 48%; }
|
||||
fieldset[role=mobile-nav]{ float: left; width: 48%;
|
||||
select{ width: 100%; font-size: .8em; border: 1px solid #888;}
|
||||
}
|
||||
ul { display: none; }
|
||||
@media only screen and (min-width: 550px) {
|
||||
font-size: .9em;
|
||||
ul {
|
||||
@include horizontal-list(0);
|
||||
float: left;
|
||||
display: block;
|
||||
padding-top: .15em;
|
||||
}
|
||||
ul[role=subscription] {
|
||||
margin-left: .8em;
|
||||
float: right;
|
||||
li:last-child a { padding-right: 0; }
|
||||
}
|
||||
ul li {
|
||||
margin: 0;
|
||||
}
|
||||
a {
|
||||
@include link-colors($nav-color, $nav-color-hover, $visited: $nav-color);
|
||||
@extend .sans;
|
||||
text-shadow: lighten($nav-bg, 12) 0 1px;
|
||||
float: left;
|
||||
text-decoration: none;
|
||||
font-size: 1.1em;
|
||||
padding: .1em 0;
|
||||
line-height: 1.5em;
|
||||
}
|
||||
li + li {
|
||||
border-left: 1px solid $nav-border-left;
|
||||
margin-left: .8em;
|
||||
a {
|
||||
padding-left: .8em;
|
||||
border-left: 1px solid $nav-border-right;
|
||||
}
|
||||
}
|
||||
form {
|
||||
float: right;
|
||||
text-align: left;
|
||||
padding-left: .8em;
|
||||
width: $sidebar-width-medium - $pad-medium*2 - $sidebar-pad-medium + 20px;
|
||||
.search {
|
||||
width: 93%;
|
||||
font-size: .95em;
|
||||
line-height: 1.2em;
|
||||
}
|
||||
}
|
||||
ul[data-subscription$=email] + form {
|
||||
width: $sidebar-width-medium - $pad-medium*2 - $sidebar-pad-medium - 58px;
|
||||
.search { width: 91%; }
|
||||
}
|
||||
fieldset[role=mobile-nav] { display: none; }
|
||||
fieldset[role=site-search]{ width: 99%; }
|
||||
}
|
||||
@media only screen and (min-width: 992px) {
|
||||
form {
|
||||
width: $sidebar-width-wide - $pad-wide - $sidebar-pad-wide*2 + 10px;
|
||||
}
|
||||
ul[data-subscription$=email] + form {
|
||||
width: $sidebar-width-wide - $pad-wide - $sidebar-pad-wide*2 - 58px;
|
||||
}
|
||||
}
|
||||
}
|
||||
.no-placeholder {
|
||||
body > nav .search {
|
||||
background: lighten($nav-bg, 15) image-url('search.png') .3em .25em no-repeat;
|
||||
text-indent: 1.3em;
|
||||
}
|
||||
}
|
||||
@mixin mask-subscription-nav($feed: 'rss.png'){
|
||||
position: relative; top: 0px;
|
||||
text-indent: -999999em;
|
||||
background-color: $nav-border-right;
|
||||
border: 0;
|
||||
padding: 0;
|
||||
&,&:after { @include mask-image($feed); }
|
||||
&:after {
|
||||
content: "";
|
||||
position: absolute; top: -1px; left: 0;
|
||||
background-color: lighten($nav-color, 25);
|
||||
}
|
||||
&:hover:after { background-color: lighten($nav-color, 20); }
|
||||
}
|
||||
.maskImage {
|
||||
body > nav {
|
||||
@media only screen and (min-width: 550px) {
|
||||
ul[data-subscription$=email] + form {
|
||||
width: $sidebar-width-medium - $pad-medium*2 - $sidebar-pad-medium - 32px;
|
||||
}
|
||||
}
|
||||
@media only screen and (min-width: 992px) {
|
||||
ul[data-subscription$=email] + form {
|
||||
width: $sidebar-width-wide - $pad-wide - $sidebar-pad-wide*2 - 32px;
|
||||
}
|
||||
}
|
||||
}
|
||||
ul[role=subscription] { position: relative; top: .2em; li, a { border: 0; padding: 0; }}
|
||||
a[rel=subscribe-rss]{ @include mask-subscription-nav('rss.png'); }
|
||||
a[rel=subscribe-email]{ @include mask-subscription-nav('email.png'); }
|
||||
}
|
6
sass/partials/_sharing.scss
Normal file
@ -0,0 +1,6 @@
|
||||
.sharing {
|
||||
p.meta + & {
|
||||
padding: { top: 1em; left: 0; }
|
||||
background: $img-border top left repeat-x;
|
||||
}
|
||||
}
|
4
sass/partials/_sidebar.scss
Normal file
@ -0,0 +1,4 @@
|
||||
@import "sidebar/base";
|
||||
@import "sidebar/twitter";
|
||||
@import "sidebar/pinboard";
|
||||
@import "sidebar/delicious";
|
215
sass/partials/_syntax.scss
Normal file
@ -0,0 +1,215 @@
|
||||
.highlight, html .gist .gist-file .gist-syntax .gist-highlight {
|
||||
.line-numbers {
|
||||
text-align: right;
|
||||
font-size: 13px;
|
||||
line-height: 1.45em;
|
||||
background: $base02 $noise-bg !important;
|
||||
border-right: 1px solid darken($base03, 2) !important;
|
||||
@include box-shadow(lighten($base02, 2) -1px 0 inset);
|
||||
text-shadow: darken($base02, 10) 0 -1px;
|
||||
span { color: $base01 !important; }
|
||||
padding: .8em !important;
|
||||
@include border-radius(0);
|
||||
}
|
||||
}
|
||||
html .gist .gist-file {
|
||||
margin-bottom: 1.5em;
|
||||
position: relative;
|
||||
border: none;
|
||||
padding-top: image-height("code_bg.png") !important;
|
||||
.gist-syntax {
|
||||
border-bottom: 1px solid darken($base03, 2) !important;
|
||||
.gist-highlight{
|
||||
background: $base03 !important;
|
||||
pre {
|
||||
@extend .pre-code;
|
||||
}
|
||||
}
|
||||
}
|
||||
.gist-meta {
|
||||
padding: .6em 0.8em;
|
||||
border: 1px solid lighten($base02, 2) !important;
|
||||
color: $base01;
|
||||
font-size: .7em !important;
|
||||
background: $base02 $noise-bg;
|
||||
@extend .sans;
|
||||
line-height: 1.5em;
|
||||
a {
|
||||
color: mix($base1, $base01) !important;
|
||||
@include hover-link;
|
||||
&:hover { color: $base1 !important; }
|
||||
}
|
||||
a[href*='#file'] {
|
||||
position: absolute; top: 0; left:0; right:-10px;
|
||||
color: #474747 !important;
|
||||
@extend .code-title;
|
||||
&:hover { color: $link-color !important; }
|
||||
}
|
||||
a[href*=raw]{
|
||||
@extend .download-source;
|
||||
top: .4em;
|
||||
}
|
||||
}
|
||||
}
|
||||
pre {
|
||||
background: $pre-bg $noise-bg;
|
||||
@include border-radius(.4em);
|
||||
@extend .mono;
|
||||
border: 1px solid $pre-border;
|
||||
line-height: 1.45em;
|
||||
font-size: 13px;
|
||||
margin-bottom: 1.5em;
|
||||
padding: .8em 1em;
|
||||
color: $pre-color;
|
||||
overflow: auto;
|
||||
}
|
||||
h3.filename {
|
||||
@extend .code-title;
|
||||
+ pre { @include border-top-radius(0px); }
|
||||
}
|
||||
|
||||
p code {
|
||||
@extend .mono;
|
||||
display: inline-block;
|
||||
white-space: no-wrap;
|
||||
background: #fff;
|
||||
font-size: .8em;
|
||||
line-height: 1.5em;
|
||||
color: #555;
|
||||
border: 1px solid #ddd;
|
||||
@include border-radius(.4em);
|
||||
padding: 0 .3em;
|
||||
margin: -1px 0;
|
||||
}
|
||||
|
||||
.pre-code {
|
||||
@include selection(adjust-color($base03, $lightness: 23%, $saturation: -65%), $text-shadow: $base03 0 1px);
|
||||
font-family: $mono !important;
|
||||
overflow: scroll;
|
||||
overflow-y: hidden;
|
||||
display: block;
|
||||
padding: .8em !important;
|
||||
overflow-x: auto;
|
||||
line-height: 1.45em;
|
||||
background: $base03 $noise-bg !important;
|
||||
color: $base1 !important;
|
||||
span { color: $base1 !important; }
|
||||
span { font-style: normal !important; font-weight: normal !important; }
|
||||
|
||||
.c { color: $base01 !important; font-style: italic !important; } /* Comment */
|
||||
.cm { color: $base01 !important; font-style: italic !important; } /* Comment.Multiline */
|
||||
.cp { color: $base01 !important; font-style: italic !important; } /* Comment.Preproc */
|
||||
.c1 { color: $base01 !important; font-style: italic !important; } /* Comment.Single */
|
||||
.cs { color: $base01 !important; font-weight: bold !important; font-style: italic !important; } /* Comment.Special */
|
||||
.err { color: $red !important; background: none !important; } /* Error */
|
||||
.k { color: $orange !important; } /* Keyword */
|
||||
.o { color: $base1 !important; font-weight: bold !important; } /* Operator */
|
||||
.p { color: $base1 !important; } /* Operator */
|
||||
.ow { color: $cyan !important; font-weight: bold !important; } /* Operator.Word */
|
||||
.gd { color: $base1 !important; background-color: mix($red, $base03, 25%) !important; display: inline-block; } /* Generic.Deleted */
|
||||
.gd .x { color: $base1 !important; background-color: mix($red, $base03, 35%) !important; display: inline-block; } /* Generic.Deleted.Specific */
|
||||
.ge { color: $base1 !important; font-style: italic !important; } /* Generic.Emph */
|
||||
//.gr { color: #aa0000 } /* Generic.Error */
|
||||
.gh { color: $base01 !important; } /* Generic.Heading */
|
||||
.gi { color: $base1 !important; background-color: mix($green, $base03, 20%) !important; display: inline-block; } /* Generic.Inserted */
|
||||
.gi .x { color: $base1 !important; background-color: mix($green, $base03, 40%) !important; display: inline-block; } /* Generic.Inserted.Specific */
|
||||
//.go { color: #888888 } /* Generic.Output */
|
||||
//.gp { color: #555555 } /* Generic.Prompt */
|
||||
.gs { color: $base1 !important; font-weight: bold !important; } /* Generic.Strong */
|
||||
.gu { color: $violet !important; } /* Generic.Subheading */
|
||||
//.gt { color: #aa0000 } /* Generic.Traceback */
|
||||
.kc { color: $green !important; font-weight: bold !important; } /* Keyword.Constant */
|
||||
.kd { color: $blue !important; } /* Keyword.Declaration */
|
||||
.kp { color: $orange !important; font-weight: bold !important; } /* Keyword.Pseudo */
|
||||
.kr { color: $magenta !important; font-weight: bold !important; } /* Keyword.Reserved */
|
||||
.kt { color: $cyan !important; } /* Keyword.Type */
|
||||
.n { color: $blue !important; }
|
||||
.na { color: $blue !important; } /* Name.Attribute */
|
||||
.nb { color: $green !important; } /* Name.Builtin */
|
||||
//.nc { color: #445588; font-weight: bold } /* Name.Class */
|
||||
.no { color: $yellow !important; } /* Name.Constant */
|
||||
//.ni { color: #800080 } /* Name.Entity */
|
||||
.ne { color: $blue !important; font-weight: bold !important; } /* Name.Exception */
|
||||
.nf { color: $blue !important; font-weight: bold !important; } /* Name.Function */
|
||||
.nn { color: $yellow !important; } /* Name.Namespace */
|
||||
.nt { color: $blue !important; font-weight: bold !important; } /* Name.Tag */
|
||||
.nx { color: $yellow !Important; }
|
||||
//.bp { color: #999999 } /* Name.Builtin.Pseudo */
|
||||
//.vc { color: #008080 } /* Name.Variable.Class */
|
||||
.vg { color: $blue !important; } /* Name.Variable.Global */
|
||||
.vi { color: $blue !important; } /* Name.Variable.Instance */
|
||||
.nv { color: $blue !important; } /* Name.Variable */
|
||||
//.w { color: #bbbbbb } /* Text.Whitespace */
|
||||
.mf { color: $cyan !important; } /* Literal.Number.Float */
|
||||
.m { color: $cyan !important; } /* Literal.Number */
|
||||
.mh { color: $cyan !important; } /* Literal.Number.Hex */
|
||||
.mi { color: $cyan !important; } /* Literal.Number.Integer */
|
||||
//.mo { color: #009999 } /* Literal.Number.Oct */
|
||||
.s { color: $cyan !important; } /* Literal.String */
|
||||
//.sb { color: #d14 } /* Literal.String.Backtick */
|
||||
//.sc { color: #d14 } /* Literal.String.Char */
|
||||
.sd { color: $cyan !important; } /* Literal.String.Doc */
|
||||
.s2 { color: $cyan !important; } /* Literal.String.Double */
|
||||
.se { color: $red !important; } /* Literal.String.Escape */
|
||||
//.sh { color: #d14 } /* Literal.String.Heredoc */
|
||||
.si { color: $blue !important; } /* Literal.String.Interpol */
|
||||
//.sx { color: #d14 } /* Literal.String.Other */
|
||||
.sr { color: $cyan !important; } /* Literal.String.Regex */
|
||||
.s1 { color: $cyan !important; } /* Literal.String.Single */
|
||||
//.ss { color: #990073 } /* Literal.String.Symbol */
|
||||
//.il { color: #009999 } /* Literal.Number.Integer.Long */
|
||||
div { .gd, .gd .x, .gi, .gi .x { display: block; }}
|
||||
}
|
||||
|
||||
.highlight, .gist-highlight {
|
||||
pre { background: none; @include border-radius(none); border: none; padding: 0; margin-bottom: 0; }
|
||||
margin-bottom: 1.5em;
|
||||
background: $base03;
|
||||
overflow-y: hidden;
|
||||
overflow-x: auto;
|
||||
}
|
||||
pre, .highlight, .gist-highlight {
|
||||
&::-webkit-scrollbar { height: .5em; background: rgba(#fff, .15); }
|
||||
&::-webkit-scrollbar-thumb:horizontal { background: rgba(#fff, .2); -webkit-border-radius: 4px; border-radius: 4px }
|
||||
}
|
||||
|
||||
.highlight code { @extend .pre-code; background: #000;}
|
||||
figure[role=code] {
|
||||
background: none;
|
||||
padding: 0;
|
||||
border: 0;
|
||||
margin-bottom: 1.5em;
|
||||
figcaption {
|
||||
position: relative;
|
||||
@extend .code-title;
|
||||
a { @extend .download-source; }
|
||||
}
|
||||
.highlight { margin-bottom: 0; border-bottom: 1px solid darken($base03, 2) !important; }
|
||||
}
|
||||
.code-title {
|
||||
text-align: center;
|
||||
font-size: 13px;
|
||||
line-height: 2em;
|
||||
text-shadow: #cbcccc 0 1px 0;
|
||||
color: #474747;
|
||||
font-weight: normal;
|
||||
margin-bottom: 0;
|
||||
@include border-top-radius(5px);
|
||||
font-family: "Helvetica Neue", Arial, "Lucida Grande", "Lucida Sans Unicode", Lucida, sans-serif;
|
||||
background: #aaaaaa image-url("code_bg.png") top repeat-x;
|
||||
border: 1px solid #565656;
|
||||
border-top-color: #cbcbcb;
|
||||
border-left-color: #a5a5a5;
|
||||
border-right-color: #a5a5a5;
|
||||
border-bottom: 0;
|
||||
}
|
||||
|
||||
.download-source {
|
||||
position: absolute; right: .8em;
|
||||
@include hover-link;
|
||||
color: #666 !important;
|
||||
z-index: 1;
|
||||
font-size: 13px;
|
||||
text-shadow: #cbcccc 0 1px 0;
|
||||
padding-left: 3em;
|
||||
}
|
99
sass/partials/sidebar/_base.scss
Normal file
@ -0,0 +1,99 @@
|
||||
.side-shadow-border {
|
||||
@include box-shadow(lighten($sidebar-bg, 5) 0 1px);
|
||||
}
|
||||
aside[role=sidebar] {
|
||||
color: $sidebar-color;
|
||||
text-shadow: lighten($sidebar-bg, 8) 0 1px;
|
||||
section {
|
||||
@extend .sans;
|
||||
font-size: .8em;
|
||||
line-height: 1.4em;
|
||||
margin-bottom: 1.5em;
|
||||
h1 {
|
||||
margin: 1.5em 0 0;
|
||||
padding-bottom: .2em;
|
||||
border-bottom: 1px solid $sidebar-border;
|
||||
@extend .side-shadow-border;
|
||||
+ p {
|
||||
padding-top: .4em;
|
||||
}
|
||||
}
|
||||
}
|
||||
ul {
|
||||
margin-bottom: 0.5em;
|
||||
margin-left: 0;
|
||||
}
|
||||
li {
|
||||
list-style: none;
|
||||
padding: .5em 0;
|
||||
margin: 0;
|
||||
border-bottom: 1px solid $sidebar-border;
|
||||
@extend .side-shadow-border;
|
||||
p:last-child {
|
||||
margin-bottom: 0;
|
||||
}
|
||||
}
|
||||
a {
|
||||
color: inherit;
|
||||
@include transition(color .5s);
|
||||
}
|
||||
&:hover a {
|
||||
color: $sidebar-link-color;
|
||||
&:hover { color: $sidebar-link-color-hover; }
|
||||
}
|
||||
}
|
||||
.aside-alt-link {
|
||||
color: $sidebar-link-color-subdued;
|
||||
&:hover {
|
||||
color: $sidebar-link-color-subdued-hover;
|
||||
}
|
||||
}
|
||||
|
||||
@media only screen and (min-width: 768px) {
|
||||
.toggle-sidebar {
|
||||
outline: none;
|
||||
position: absolute; right: -10px; top: 0; bottom: 0;
|
||||
display: inline-block;
|
||||
text-decoration: none;
|
||||
color: mix($text-color-light, $sidebar-bg);
|
||||
width: 9px;
|
||||
cursor: pointer;
|
||||
&:hover {
|
||||
background: mix($sidebar-border, $sidebar-bg);
|
||||
@include background(linear-gradient(left, rgba($sidebar-border, .5), rgba($sidebar-border, 0)));
|
||||
}
|
||||
&:after {
|
||||
position: absolute; right: -11px; top: 0;
|
||||
width: 20px;
|
||||
font-size: 1.2em;
|
||||
line-height: 1.1em;
|
||||
padding-bottom: .15em;
|
||||
@include border-bottom-right-radius(.3em);
|
||||
text-align: center;
|
||||
background: $main-bg $noise-bg;
|
||||
border-bottom: 1px solid $sidebar-border;
|
||||
border-right: 1px solid $sidebar-border;
|
||||
content: "\00BB";
|
||||
text-indent: -1px;
|
||||
}
|
||||
.collapse-sidebar & {
|
||||
text-indent: 0px;
|
||||
right: -20px;
|
||||
width: 19px;
|
||||
&:hover {
|
||||
background: mix($sidebar-border, $sidebar-bg);
|
||||
}
|
||||
&:after {
|
||||
border-left: 1px solid $sidebar-border;
|
||||
text-shadow: #fff 0 1px;
|
||||
content: "\00AB";
|
||||
left: 0px; right: 0;
|
||||
text-align: center;
|
||||
text-indent: 0;
|
||||
border: 0;
|
||||
border-right-width: 0;
|
||||
background: none;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
4
sass/partials/sidebar/_delicious.scss
Normal file
@ -0,0 +1,4 @@
|
||||
.delicious-posts {
|
||||
a.delicious-link { margin-bottom: .5em; display: block; }
|
||||
p { font-size: 1em; }
|
||||
}
|
12
sass/partials/sidebar/_pinboard.scss
Normal file
@ -0,0 +1,12 @@
|
||||
#pinboard_linkroll {
|
||||
.pin-title, .pin-description {
|
||||
display: block;
|
||||
margin-bottom: .5em;
|
||||
}
|
||||
.pin-tag {
|
||||
@include hover-link;
|
||||
@extend .aside-alt-link;
|
||||
&:after { content: ','; }
|
||||
&:last-child:after { content: ''; }
|
||||
}
|
||||
}
|
34
sass/partials/sidebar/_twitter.scss
Normal file
@ -0,0 +1,34 @@
|
||||
#tweets {
|
||||
.loading {
|
||||
background: inline-image('bird_32_gray.png') no-repeat center .5em;
|
||||
color: darken($sidebar-bg, 18);
|
||||
text-shadow: $main-bg 0 1px;
|
||||
text-align: center;
|
||||
padding: 2.5em 0 .5em;
|
||||
&.error {
|
||||
background: inline-image('bird_32_gray_fail.png') no-repeat center .5em;
|
||||
}
|
||||
}
|
||||
p {
|
||||
position: relative;
|
||||
padding-right: 1em;
|
||||
}
|
||||
a[href*=status]{
|
||||
color: $twitter-status-link;
|
||||
float: right;
|
||||
padding: 0 0 .1em 1em;
|
||||
position: relative; right: -1.3em;
|
||||
text-shadow: #fff 0 1px;
|
||||
font-size: .7em;
|
||||
span { font-size: 1.5em; }
|
||||
text-decoration: none;
|
||||
&:hover {
|
||||
color: $sidebar-link-color-subdued-hover;
|
||||
text-decoration: none;
|
||||
}
|
||||
}
|
||||
a[href*='twitter.com/search']{
|
||||
@extend .aside-alt-link;
|
||||
@include hover-link;
|
||||
}
|
||||
}
|
9
sass/screen.scss
Normal file
@ -0,0 +1,9 @@
|
||||
@import "compass";
|
||||
@include global-reset;
|
||||
@include reset-html5;
|
||||
|
||||
@import "custom/colors";
|
||||
@import "custom/layout";
|
||||
@import "base";
|
||||
@import "partials";
|
||||
@import "custom/styles";
|
8
source/_includes/archive_post.html
Normal file
@ -0,0 +1,8 @@
|
||||
{% capture category %}{{ post.categories | size }}{% endcapture %}
|
||||
<h1><a href="{{ site.root }}{{ post.url }}">{{post.title}}</a></h1>
|
||||
<time datetime="{{ post.date | datetime }}" pubdate>{{ post.date | date: "<span class='month'>%b</span> <span class='day'>%d</span> <span class='year'>%Y</span>"}}</time>
|
||||
{% if category != '0' %}
|
||||
<footer>
|
||||
<span class="categories">posted in {{ post.categories | category_links }}</span>
|
||||
</footer>
|
||||
{% endif %}
|
20
source/_includes/article.html
Normal file
@ -0,0 +1,20 @@
|
||||
{% unless page.no_header %}
|
||||
<header>
|
||||
{% if index %}
|
||||
<h1 class="entry-title"><a href="{{ site.root }}{{ post.url }}">{{ post.title | titlecase }}</a></h1>
|
||||
{% else %}
|
||||
<h1 class="entry-title">{{ page.title | titlecase }}</h1>
|
||||
{% endif %}
|
||||
{% unless page.meta == false %}
|
||||
<p class="meta">{% include post/date.html %}</p>
|
||||
{% endunless %}
|
||||
</header>
|
||||
{% endunless %}
|
||||
{% if index %}
|
||||
<div class="entry-content">{{ content | exerpt | smart_quotes }}</div>
|
||||
<footer>
|
||||
<a rel="full-article" href="{{ site.root }}{{ post.url }}">Read on →</a>
|
||||
</footer>
|
||||
{% else %}
|
||||
<div class="entry-content">{{ content | smart_quotes }}</div>
|
||||
{% endif %}
|
7
source/_includes/asides/delicious.html
Normal file
@ -0,0 +1,7 @@
|
||||
{% if site.delicious_user %}
|
||||
<section>
|
||||
<h1>On Delicious</h1>
|
||||
<script type="text/javascript" src="http://feeds.delicious.com/v2/js/{{ site.delicious_user }}?title=&count={{ site.delicious_count }}&sort=date&extended"></script>
|
||||
<p><a href="http://delicious.com/{{ site.delicious_user }}">My Delicious Bookmarks »</a></p>
|
||||
</section>
|
||||
{% endif %}
|
19
source/_includes/asides/pinboard.html
Normal file
@ -0,0 +1,19 @@
|
||||
{% if site.pinboard_user %}
|
||||
<section>
|
||||
<h1>My Pinboard</h1>
|
||||
<ul id="pinboard_linkroll">Fetching linkroll...</ul>
|
||||
<p><a href="http://pinboard.in/u:{{ site.pinboard_user }}">My Pinboard Bookmarks »</a></p>
|
||||
</section>
|
||||
<script type="text/javascript">
|
||||
var linkroll = 'pinboard_linkroll'; //id target for pinboard list
|
||||
var pinboard_user = "{{ site.pinboard_user }}"; //id target for pinboard list
|
||||
var pinboard_count = {{ site.pinboard_count }}; //id target for pinboard list
|
||||
(function(){
|
||||
var pinboardInit = document.createElement('script');
|
||||
pinboardInit.type = 'text/javascript';
|
||||
pinboardInit.async = true;
|
||||
pinboardInit.src = '{{ site.root }}/javascripts/pinboard.js';
|
||||
document.getElementsByTagName('head')[0].appendChild(pinboardInit);
|
||||
})();
|
||||
</script>
|
||||
{% endif %}
|
10
source/_includes/asides/recent_posts.html
Normal file
@ -0,0 +1,10 @@
|
||||
<section>
|
||||
<h1>Recent Posts</h1>
|
||||
<ul id="recent_posts">
|
||||
{% for post in site.posts limit: site.recent_posts %}
|
||||
<li class="post">
|
||||
<a href="{{ site.root }}{{ post.url }}">{{ post.title }}</a>
|
||||
</li>
|
||||
{% endfor %}
|
||||
</ul>
|
||||
</section>
|
19
source/_includes/asides/twitter.html
Normal file
@ -0,0 +1,19 @@
|
||||
{% if site.twitter_user %}
|
||||
<section>
|
||||
<h1>Latest Tweets</h1>
|
||||
<ul id="tweets">
|
||||
<li class="loading">Status updating...</li>
|
||||
</ul>
|
||||
<script type="text/javascript">
|
||||
$.domReady(function(){
|
||||
getTwitterFeed("{{site.twitter_user}}", {{site.twitter_tweet_count}}, {{site.twitter_show_replies}});
|
||||
});
|
||||
</script>
|
||||
<script src="{{ site.root }}/javascripts/twitter.js" type="text/javascript"> </script>
|
||||
{% if site.twitter_follow_button %}
|
||||
<a href="http://twitter.com/{{ site.twitter_user }}" class="twitter-follow-button" data-width="208px" data-show-count="{{ site.twitter_show_follower_count }}">Follow @{{ site.twitter_user }}</a>
|
||||
{% else %}
|
||||
<p>Follow <a href="http://twitter.com/{{site.twitter_user}}">@{{ site.twitter_user }}</a></p>
|
||||
{% endif %}
|
||||
</section>
|
||||
{% endif %}
|
4
source/_includes/footer.html
Normal file
@ -0,0 +1,4 @@
|
||||
<p>
|
||||
Copyright © {{ site.time | date: "%Y" }} - {{ site.author }} -
|
||||
<span class="credit">Powered by <a href="http://octopress.org">Octopress</a></span>
|
||||
</p>
|
13
source/_includes/google_analytics.html
Normal file
@ -0,0 +1,13 @@
|
||||
{% if site.google_analytics_tracking_id %}
|
||||
<script type="text/javascript">
|
||||
var _gaq = _gaq || [];
|
||||
_gaq.push(['_setAccount', '{{ site.google_analytics_tracking_id }}']);
|
||||
_gaq.push(['_trackPageview']);
|
||||
|
||||
(function() {
|
||||
var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;
|
||||
ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
|
||||
var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);
|
||||
})();
|
||||
</script>
|
||||
{% endif %}
|
9
source/_includes/google_plus_one.html
Normal file
@ -0,0 +1,9 @@
|
||||
{% if site.google_plus_one %}
|
||||
<script type="text/javascript">
|
||||
(function() {
|
||||
var script = document.createElement('script'); script.type = 'text/javascript'; script.async = true;
|
||||
script.src = 'https://apis.google.com/js/plusone.js';
|
||||
var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(script, s);
|
||||
})();
|
||||
</script>
|
||||
{% endif %}
|
33
source/_includes/head.html
Normal file
@ -0,0 +1,33 @@
|
||||
<!DOCTYPE html>
|
||||
<!--[if IEMobile 7 ]><html class="no-js iem7" manifest="default.appcache?v=1"><![endif]-->
|
||||
<!--[if lt IE 9]><html class="no-js lte-ie8"><![endif]-->
|
||||
<!--[if (gt IE 8)|(gt IEMobile 7)|!(IEMobile)|!(IE)]><!--><html class="no-js" manifest="default.appcache?v=1" lang="en"><!--<![endif]-->
|
||||
<head>
|
||||
<meta charset="utf-8">
|
||||
<title>{{site.title}}{% if page.title %}: {{page.title}}{% endif %}</title>
|
||||
<meta name="author" content="{{site.author}}">
|
||||
{% if page.description %}
|
||||
<meta name="description" content="{{page.description}}"/>
|
||||
{% endif %}
|
||||
|
||||
<!-- http://t.co/dKP3o1e -->
|
||||
<meta name="HandheldFriendly" content="True">
|
||||
<meta name="MobileOptimized" content="320">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1">
|
||||
|
||||
{% if page.keywords %}
|
||||
<meta name="keywords" content="{{page.keywords}}"/>
|
||||
{% endif %}
|
||||
|
||||
<link href="{{ site.root }}/images/favicon.png" rel="shortcut icon" />
|
||||
<link href="{{ site.root }}/stylesheets/screen.css" media="screen, projection" rel="stylesheet" type="text/css">
|
||||
<script src="{{ site.root }}/javascripts/modernizr-2.0.js"></script>
|
||||
<script src="http://s3.amazonaws.com/ender-js/jeesh.min.js"></script>
|
||||
<script src="{{ site.root }}/javascripts/octopress.js" type="text/javascript"></script>
|
||||
<link href='http://fonts.googleapis.com/css?family=PT+Serif:regular,italic,bold,bolditalic' rel='stylesheet' type='text/css'>
|
||||
<link href='http://fonts.googleapis.com/css?family=PT+Sans:regular,italic,bold,bolditalic' rel='stylesheet' type='text/css'>
|
||||
<link href="{{ site.root }}/atom.xml" rel="alternate" title="{{site.title}}" type="application/atom+xml"/>
|
||||
{% include google_analytics.html %}
|
||||
{% include google_plus_one.html %}
|
||||
{% include twitter_sharing.html %}
|
||||
</head>
|
6
source/_includes/header.html
Normal file
@ -0,0 +1,6 @@
|
||||
<hgroup>
|
||||
<h1><a href="{{ site.root }}/">{{ site.title }}</a></h1>
|
||||
{% if site.subtitle %}
|
||||
<h2>{{ site.subtitle }}</h2>
|
||||
{% endif %}
|
||||
</hgroup>
|
16
source/_includes/navigation.html
Normal file
@ -0,0 +1,16 @@
|
||||
<ul role="subscription" data-subscription="rss{% if site.subscribe_email %} email{% endif %}">
|
||||
<li><a href="{{ site.subscribe_rss }}" rel="subscribe-rss" title="subscribe via RSS">RSS</a></li>
|
||||
{% if site.subscribe_email %}
|
||||
<li><a href="{{ site.subscribe_email }}" rel="subscribe-email" title="subscribe via email">Email</a></li>
|
||||
{% endif %}
|
||||
</ul>
|
||||
<form action="{{ site.simple_search }}" method="get">
|
||||
<fieldset role="site-search">
|
||||
<input type="hidden" name="q" value="site:{{ site.url | search_url }}" />
|
||||
<input class="search" type="text" name="q" results="0" placeholder="Search"/>
|
||||
</fieldset>
|
||||
</form>
|
||||
<ul role="navigation">
|
||||
<li><a href="{{ site.root }}/">Blog</a></li>
|
||||
<li><a href="{{ site.root }}/blog/archives">Archives</a></li>
|
||||
</ul>
|
6
source/_includes/post/author.html
Normal file
@ -0,0 +1,6 @@
|
||||
{% if post.author %}
|
||||
{% assign author = post.author %}
|
||||
{% else %}
|
||||
{% assign author = site.author %}
|
||||
{% endif %}
|
||||
{% if author %}<span class="byline author vcard">Posted by <span class="fn">{{ author }}</span></span>{% endif %}
|
10
source/_includes/post/categories.html
Normal file
@ -0,0 +1,10 @@
|
||||
{% capture category %}{% if post %}{{ post.categories | category_links | size }}{% else %}{{ page.categories | category_links | size }}{% endif %}{% endcapture %}
|
||||
{% unless category == '0' %}
|
||||
<span class="categories">
|
||||
{% if post %}
|
||||
{{ post.categories | category_links }}
|
||||
{% else %}
|
||||
{{ page.categories | category_links }}
|
||||
{% endif %}
|
||||
</span>
|
||||
{% endunless %}
|
10
source/_includes/post/date.html
Normal file
@ -0,0 +1,10 @@
|
||||
{% capture date %}{{ page.date }}{{ post.date }}{% endcapture %}
|
||||
{% capture has_date %}{{ date | size }}{% endcapture %}
|
||||
{% capture updated %}{{ page.updated }}{{ post.updated }}{% endcapture %}
|
||||
{% capture was_updated %}{{ updated | size }}{% endcapture %}
|
||||
{% if has_date != '0' %}
|
||||
<time datetime="{{ date | datetime }}" pubdate {% if updated %} updated {% endif %}>{{ date | ordinalize }}</time>
|
||||
{% endif %}
|
||||
{% if was_updated != '0' %}
|
||||
<time class="updated" datetime="{{ updated | datetime }}"></time>
|
||||
{% endif %}
|
13
source/_includes/post/disqus_thread.html
Normal file
@ -0,0 +1,13 @@
|
||||
<div id="disqus_thread"></div>
|
||||
<script type="text/javascript">
|
||||
var disqus_shortname = '{{ site.disqus_short_name }}';
|
||||
var disqus_identifier = '{{ site.url }}{{ page.url }}';
|
||||
var disqus_url = '{{ site.url }}{{ page.url }}';
|
||||
//var disqus_developer = 1;
|
||||
(function() {
|
||||
var dsq = document.createElement('script'); dsq.type = 'text/javascript'; dsq.async = true;
|
||||
dsq.src = 'http://' + disqus_shortname + '.disqus.com/embed.js';
|
||||
(document.getElementsByTagName('head')[0] || document.getElementsByTagName('body')[0]).appendChild(dsq);
|
||||
})();
|
||||
</script>
|
||||
<noscript>Please enable JavaScript to view the <a href="http://disqus.com/?ref_noscript">comments powered by Disqus.</a></noscript>
|
8
source/_includes/post/sharing.html
Normal file
@ -0,0 +1,8 @@
|
||||
<div class="sharing">
|
||||
{% if site.twitter_tweet_button %}
|
||||
<a href="http://twitter.com/share" class="twitter-share-button" data-url="{{ site.url }}{{ page.url }}" data-via="{{ site.twitter_user }}" data-counturl="{{ site.url }}{{ page.url }}" >Tweet</a>
|
||||
{% endif %}
|
||||
{% if site.google_plus_one %}
|
||||
<g:plusone size="{{ site.google_plus_one_size }}"></g:plusone>
|
||||
{% endif %}
|
||||
</div>
|
4
source/_includes/sidebar.html
Normal file
@ -0,0 +1,4 @@
|
||||
{% include asides/recent_posts.html %}
|
||||
{% include asides/twitter.html %}
|
||||
{% include asides/delicious.html %}
|
||||
{% include asides/pinboard.html %}
|
11
source/_includes/twitter_sharing.html
Normal file
@ -0,0 +1,11 @@
|
||||
{% if site.twitter_follow_button or site.twitter_tweet_button %}
|
||||
<script type="text/javascript">
|
||||
(function(){
|
||||
var twitterWidgets = document.createElement('script');
|
||||
twitterWidgets.type = 'text/javascript';
|
||||
twitterWidgets.async = true;
|
||||
twitterWidgets.src = 'http://platform.twitter.com/widgets.js';
|
||||
document.getElementsByTagName('head')[0].appendChild(twitterWidgets);
|
||||
})();
|
||||
</script>
|
||||
{% endif %}
|
17
source/_layouts/category_index.html
Normal file
@ -0,0 +1,17 @@
|
||||
---
|
||||
layout: page
|
||||
footer: false
|
||||
---
|
||||
|
||||
<div id="blog-archives" class="category">
|
||||
{% for post in site.categories[page.category] %}
|
||||
{% capture this_year %}{{ post.date | date: "%Y" }}{% endcapture %}
|
||||
{% unless year == this_year %}
|
||||
{% assign year = this_year %}
|
||||
<h2>{{ year }}</h2>
|
||||
{% endunless %}
|
||||
<article>
|
||||
{% include archive_post.html %}
|
||||
</article>
|
||||
{% endfor %}
|
||||
</div>
|
15
source/_layouts/default.html
Normal file
@ -0,0 +1,15 @@
|
||||
{% include head.html %}
|
||||
<body {% if page.body_id %} id="{{ page.body_id }}" {% endif %} {% if page.sidebar == false %} class="no-sidebar" {% endif %}>
|
||||
<header>{% include header.html %}</header>
|
||||
<nav>{% include navigation.html %}</nav>
|
||||
<div id="main">
|
||||
<div id="content">
|
||||
{{ content }}
|
||||
{% unless page.sidebar == false %}
|
||||
<aside role=sidebar>{% include sidebar.html %}</aside>
|
||||
{% endunless %}
|
||||
</div>
|
||||
</div>
|
||||
<footer>{% include footer.html %}</footer>
|
||||
</body>
|
||||
</html>
|
27
source/_layouts/page.html
Normal file
@ -0,0 +1,27 @@
|
||||
---
|
||||
layout: default
|
||||
---
|
||||
|
||||
<div>
|
||||
<article>
|
||||
<header>
|
||||
<h1 class="entry-title">{{ page.title | titlecase }}</h1>
|
||||
{% if page.date %}<p class="meta">{% include post/date.html %}</p>{% endif %}
|
||||
</header>
|
||||
{{ content | smart_quotes }}
|
||||
{% unless page.footer == false %}
|
||||
<footer>
|
||||
{% if page.date %}<p class="meta">{% include post/date.html %}</p>{% endif %}
|
||||
{% unless page.sharing == false %}
|
||||
{% include post/sharing.html %}
|
||||
{% endunless %}
|
||||
</footer>
|
||||
{% endunless %}
|
||||
</article>
|
||||
{% if site.disqus_short_name and page.comments == true %}
|
||||
<section>
|
||||
<h1>Comments</h1>
|
||||
<div id="disqus_thread">{% include post/disqus_thread.html %}</div>
|
||||
</section>
|
||||
{% endif %}
|
||||
</div>
|
26
source/_layouts/post.html
Normal file
@ -0,0 +1,26 @@
|
||||
---
|
||||
layout: default
|
||||
single: true
|
||||
---
|
||||
|
||||
<div>
|
||||
<article class="hentry">
|
||||
{% include article.html %}
|
||||
<footer>
|
||||
<p class="meta">
|
||||
{% include post/author.html %}
|
||||
{% include post/date.html %}
|
||||
{% include post/categories.html %}
|
||||
</p>
|
||||
{% unless page.sharing == false %}
|
||||
{% include post/sharing.html %}
|
||||
{% endunless %}
|
||||
</footer>
|
||||
</article>
|
||||
{% if site.disqus_short_name and page.comments != false %}
|
||||
<section>
|
||||
<h1>Comments</h1>
|
||||
<div id="disqus_thread">{% include post/disqus_thread.html %}</div>
|
||||
</section>
|
||||
{% endif %}
|
||||
</div>
|
1
source/_posts
Symbolic link
@ -0,0 +1 @@
|
||||
/Users/bmathis/Dropbox/octopress/_assets/source/_posts
|
BIN
source/assets/jwplayer/glow/controlbar/background.png
Normal file
After Width: | Height: | Size: 141 B |
BIN
source/assets/jwplayer/glow/controlbar/blankButton.png
Normal file
After Width: | Height: | Size: 82 B |
BIN
source/assets/jwplayer/glow/controlbar/divider.png
Normal file
After Width: | Height: | Size: 118 B |
BIN
source/assets/jwplayer/glow/controlbar/fullscreenButton.png
Normal file
After Width: | Height: | Size: 203 B |
BIN
source/assets/jwplayer/glow/controlbar/fullscreenButtonOver.png
Normal file
After Width: | Height: | Size: 636 B |
BIN
source/assets/jwplayer/glow/controlbar/muteButton.png
Normal file
After Width: | Height: | Size: 343 B |
BIN
source/assets/jwplayer/glow/controlbar/muteButtonOver.png
Normal file
After Width: | Height: | Size: 835 B |
BIN
source/assets/jwplayer/glow/controlbar/normalscreenButton.png
Normal file
After Width: | Height: | Size: 210 B |
After Width: | Height: | Size: 664 B |
BIN
source/assets/jwplayer/glow/controlbar/pauseButton.png
Normal file
After Width: | Height: | Size: 170 B |
BIN
source/assets/jwplayer/glow/controlbar/pauseButtonOver.png
Normal file
After Width: | Height: | Size: 442 B |
BIN
source/assets/jwplayer/glow/controlbar/playButton.png
Normal file
After Width: | Height: | Size: 251 B |
BIN
source/assets/jwplayer/glow/controlbar/playButtonOver.png
Normal file
After Width: | Height: | Size: 553 B |
BIN
source/assets/jwplayer/glow/controlbar/timeSliderBuffer.png
Normal file
After Width: | Height: | Size: 112 B |
BIN
source/assets/jwplayer/glow/controlbar/timeSliderCapLeft.png
Normal file
After Width: | Height: | Size: 94 B |
BIN
source/assets/jwplayer/glow/controlbar/timeSliderCapRight.png
Normal file
After Width: | Height: | Size: 103 B |
BIN
source/assets/jwplayer/glow/controlbar/timeSliderProgress.png
Normal file
After Width: | Height: | Size: 114 B |
BIN
source/assets/jwplayer/glow/controlbar/timeSliderRail.png
Normal file
After Width: | Height: | Size: 116 B |
BIN
source/assets/jwplayer/glow/controlbar/unmuteButton.png
Normal file
After Width: | Height: | Size: 264 B |
BIN
source/assets/jwplayer/glow/controlbar/unmuteButtonOver.png
Normal file
After Width: | Height: | Size: 649 B |
BIN
source/assets/jwplayer/glow/display/background.png
Normal file
After Width: | Height: | Size: 686 B |
BIN
source/assets/jwplayer/glow/display/bufferIcon.png
Normal file
After Width: | Height: | Size: 816 B |
BIN
source/assets/jwplayer/glow/display/muteIcon.png
Normal file
After Width: | Height: | Size: 334 B |
BIN
source/assets/jwplayer/glow/display/playIcon.png
Normal file
After Width: | Height: | Size: 465 B |
BIN
source/assets/jwplayer/glow/dock/button.png
Normal file
After Width: | Height: | Size: 686 B |
115
source/assets/jwplayer/glow/glow.xml
Normal file
@ -0,0 +1,115 @@
|
||||
<?xml version="1.0"?>
|
||||
<skin version="1.1" name="Glow" author="LongTail Video">
|
||||
|
||||
<settings>
|
||||
<setting name="backcolor" value="0x000000" />
|
||||
<setting name="frontcolor" value="0xeeeeee" />
|
||||
<setting name="lightcolor" value="0xeeeeee" />
|
||||
<setting name="screencolor" value="0x000000" />
|
||||
</settings>
|
||||
|
||||
<components>
|
||||
<component name="controlbar">
|
||||
<settings>
|
||||
<setting name="margin" value="0" />
|
||||
<setting name="fontsize" value="11" />
|
||||
<setting name="fontcolor" value="0xEEEEEE" />
|
||||
<setting name="buttoncolor" value="0xEEEEEE" />
|
||||
</settings>
|
||||
|
||||
<layout>
|
||||
<group position="left">
|
||||
<button name="play" />
|
||||
<text name="elapsed" />
|
||||
</group>
|
||||
<group position="center">
|
||||
<slider name="time" />
|
||||
</group>
|
||||
<group position="right">
|
||||
<text name="duration" />
|
||||
<button name="blank" />
|
||||
<button name="mute" />
|
||||
<button name="fullscreen" />
|
||||
</group>
|
||||
</layout>
|
||||
|
||||
<elements>
|
||||
<element name="background" src="background.png" />
|
||||
<element name="capLeft" src="divider.png" />
|
||||
<element name="capRight" src="divider.png" />
|
||||
<element name="divider" src="divider.png" />
|
||||
<element name="blankButton" src="blankButton.png" />
|
||||
<element name="fullscreenButton" src="fullscreenButton.png" />
|
||||
<element name="fullscreenButtonOver" src="fullscreenButtonOver.png" />
|
||||
<element name="muteButton" src="muteButton.png" />
|
||||
<element name="muteButtonOver" src="muteButtonOver.png" />
|
||||
<element name="pauseButton" src="pauseButton.png" />
|
||||
<element name="pauseButtonOver" src="pauseButtonOver.png" />
|
||||
<element name="playButton" src="playButton.png" />
|
||||
<element name="playButtonOver" src="playButtonOver.png" />
|
||||
<element name="timeSliderBuffer" src="timeSliderBuffer.png" />
|
||||
<element name="timeSliderCapLeft" src="timeSliderCapLeft.png" />
|
||||
<element name="timeSliderCapRight" src="timeSliderCapRight.png" />
|
||||
<element name="timeSliderProgress" src="timeSliderProgress.png" />
|
||||
<element name="timeSliderRail" src="timeSliderRail.png" />
|
||||
<element name="normalscreenButton" src="normalscreenButton.png" />
|
||||
<element name="normalscreenButtonOver" src="normalscreenButtonOver.png" />
|
||||
<element name="unmuteButton" src="unmuteButton.png" />
|
||||
<element name="unmuteButtonOver" src="unmuteButtonOver.png" />
|
||||
<element name="volumeSliderRail" src="divider.png" />
|
||||
<element name="volumeSliderProgress" src="divider.png" />
|
||||
</elements>
|
||||
</component>
|
||||
|
||||
<component name="display">
|
||||
<settings>
|
||||
<setting name="bufferinterval" value="250" />
|
||||
<setting name="bufferrotation" value="90" />
|
||||
</settings>
|
||||
<elements>
|
||||
<element name="background" src="background.png" />
|
||||
<element name="playIcon" src="playIcon.png" />
|
||||
<element name="muteIcon" src="muteIcon.png" />
|
||||
<element name="errorIcon" src="bufferIcon.png" />
|
||||
<element name="bufferIcon" src="bufferIcon.png" />
|
||||
</elements>
|
||||
</component>
|
||||
|
||||
<component name="dock">
|
||||
<settings>
|
||||
<setting name="fontcolor" value="0xFFFFFF" />
|
||||
</settings>
|
||||
<elements>
|
||||
<element name="button" src="button.png" />
|
||||
</elements>
|
||||
</component>
|
||||
|
||||
<component name="playlist">
|
||||
<settings>
|
||||
<setting name="fontcolor" value="0xEEEEEE" />
|
||||
<setting name="overcolor" value="0xFFFFFF" />
|
||||
<setting name="activecolor" value="0xFFFFFF" />
|
||||
<setting name="backgroundcolor" value="0x333333" />
|
||||
</settings>
|
||||
<elements>
|
||||
<element name="item" src="item.png" />
|
||||
<element name="itemOver" src="itemOver.png" />
|
||||
<element name="sliderCapBottom" src="sliderCapBottom.png" />
|
||||
<element name="sliderCapTop" src="sliderCapTop.png" />
|
||||
<element name="sliderRail" src="sliderRail.png" />
|
||||
<element name="sliderThumb" src="sliderThumb.png" />
|
||||
</elements>
|
||||
</component>
|
||||
|
||||
<component name="sharing">
|
||||
<elements>
|
||||
<element name="embedIcon" src="embedIcon.png" />
|
||||
<element name="embedScreen" src="embedScreen.png" />
|
||||
<element name="shareIcon" src="shareIcon.png" />
|
||||
<element name="shareScreen" src="shareScreen.png" />
|
||||
</elements>
|
||||
</component>
|
||||
|
||||
</components>
|
||||
|
||||
</skin>
|
BIN
source/assets/jwplayer/glow/playlist/item.png
Normal file
After Width: | Height: | Size: 172 B |
BIN
source/assets/jwplayer/glow/playlist/itemOver.png
Normal file
After Width: | Height: | Size: 171 B |
BIN
source/assets/jwplayer/glow/playlist/sliderCapBottom.png
Normal file
After Width: | Height: | Size: 108 B |
BIN
source/assets/jwplayer/glow/playlist/sliderCapTop.png
Normal file
After Width: | Height: | Size: 105 B |
BIN
source/assets/jwplayer/glow/playlist/sliderRail.png
Normal file
After Width: | Height: | Size: 100 B |
BIN
source/assets/jwplayer/glow/playlist/sliderThumb.png
Normal file
After Width: | Height: | Size: 97 B |
BIN
source/assets/jwplayer/glow/sharing/embedIcon.png
Normal file
After Width: | Height: | Size: 749 B |
BIN
source/assets/jwplayer/glow/sharing/embedScreen.png
Normal file
After Width: | Height: | Size: 2.5 KiB |
BIN
source/assets/jwplayer/glow/sharing/shareIcon.png
Normal file
After Width: | Height: | Size: 589 B |
BIN
source/assets/jwplayer/glow/sharing/shareScreen.png
Normal file
After Width: | Height: | Size: 4.5 KiB |
BIN
source/assets/jwplayer/player.swf
Normal file
28
source/atom.xml
Normal file
@ -0,0 +1,28 @@
|
||||
---
|
||||
layout: nil
|
||||
---
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<feed xmlns="http://www.w3.org/2005/Atom">
|
||||
|
||||
<title>{{ site.blog_title }}</title>
|
||||
<link href="{{ site.url }}/atom.xml" rel="self"/>
|
||||
<link href="{{ site.url }}/"/>
|
||||
<updated>{{ site.time | date_to_xmlschema }}</updated>
|
||||
<id>{{ site.url }}/</id>
|
||||
<author>
|
||||
<name>{{ site.author }}</name>
|
||||
{% if site.email %}
|
||||
<email>{{ site.email }}</email>
|
||||
{% endif %}
|
||||
</author>
|
||||
|
||||
{% for post in site.posts %}
|
||||
<entry>
|
||||
<title>{{ post.title }}</title>
|
||||
<link href="{{ site.url }}{{ post.url }}"/>
|
||||
<updated>{{ post.date | date_to_xmlschema }}</updated>
|
||||
<id>{{ site.url }}{{ post.id }}</id>
|
||||
<content type="html">{{ post.content | full_urls: site.url | xml_escape }}</content>
|
||||
</entry>
|
||||
{% endfor %}
|
||||
</feed>
|
18
source/blog/archives/index.html
Normal file
@ -0,0 +1,18 @@
|
||||
---
|
||||
layout: page
|
||||
title: Blog Archive
|
||||
footer: false
|
||||
---
|
||||
|
||||
<div id="blog-archives">
|
||||
{% for post in site.posts reverse %}
|
||||
{% capture this_year %}{{ post.date | date: "%Y" }}{% endcapture %}
|
||||
{% unless year == this_year %}
|
||||
{% assign year = this_year %}
|
||||
<h2>{{ year }}</h2>
|
||||
{% endunless %}
|
||||
<article>
|
||||
{% include archive_post.html %}
|
||||
</article>
|
||||
{% endfor %}
|
||||
</div>
|
9
source/docs/blogging/code/index.markdown
Normal file
@ -0,0 +1,9 @@
|
||||
---
|
||||
layout: page
|
||||
title: "Sharing Code Snippets"
|
||||
date: 2011-07-19 18:10
|
||||
sidebar: false
|
||||
footer: false
|
||||
---
|
||||
|
||||
Awesomeness!
|
303
source/docs/blogging/code/test/index.markdown
Normal file
@ -0,0 +1,303 @@
|
||||
---
|
||||
layout: page
|
||||
title: Syntax Highlighting Test
|
||||
footer: false
|
||||
---
|
||||
|
||||
{% include_code javascripts/test.js %}
|
||||
|
||||
{% codeblock Testing html files (test.html) %}
|
||||
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
|
||||
<html><head>
|
||||
<title>A Tiny Page</title>
|
||||
<style type="text/css">
|
||||
<!--
|
||||
p { font-size:15pt; color:#000 }
|
||||
-->
|
||||
</style></head><!-- real comment -->
|
||||
<body bgcolor="#FFFFFF" text="#000000" link="#0000CC">
|
||||
<script language="javascript" type="text/javascript">
|
||||
function changeHeight(h) {
|
||||
var tds = document.getElementsByTagName("td");
|
||||
for(var i = 0; i < tds.length; i++) {
|
||||
tds[i].setAttribute("height", h + "px");
|
||||
}}
|
||||
</script>
|
||||
<h1>abc</h1>
|
||||
<h2>def</h2>
|
||||
<p>Testing page</p>
|
||||
</body></html>
|
||||
{% endcodeblock %}
|
||||
|
||||
{% gist 996818 %}
|
||||
|
||||
<h3 class="filename">syntax_test.php</h3>
|
||||
{% highlight php %}
|
||||
<?php
|
||||
require_once($GLOBALS['g_campsiteDir']. "/$ADMIN_DIR/country/common.php");
|
||||
require_once($GLOBALS['g_campsiteDir']. "/classes/SimplePager.php");
|
||||
camp_load_translation_strings("api");
|
||||
|
||||
$f_country_language_selected = camp_session_get('f_language_selected', '');
|
||||
$f_country_offset = camp_session_get('f_country_offset', 0);
|
||||
if (empty($f_country_language_selected)) {
|
||||
$f_country_language_selected = null;
|
||||
}
|
||||
$ItemsPerPage = 20;
|
||||
$languages = Language::GetLanguages(null, null, null, array(), array(), true);
|
||||
$numCountries = Country::GetNumCountries($f_country_language_selected);
|
||||
|
||||
$pager = new SimplePager($numCountries, $ItemsPerPage, "index.php?");
|
||||
|
||||
$crumbs = array();
|
||||
$crumbs[] = array(getGS("Configure"), "");
|
||||
$crumbs[] = array(getGS("Countries"), "");
|
||||
echo camp_html_breadcrumbs($crumbs);
|
||||
|
||||
?>
|
||||
|
||||
<?php if ($g_user->hasPermission("ManageCountries")) { ?>
|
||||
<table BORDER="0" CELLSPACING="0" CELLPADDING="1">
|
||||
<tr>
|
||||
<td><a href="add.php"><?php putGS("Add new"); ?></a></td>
|
||||
</tr>
|
||||
</table>
|
||||
{% endhighlight %}
|
||||
|
||||
|
||||
<h3 class="filename">syntax_test.hs</h3>
|
||||
{% highlight hs %}
|
||||
{-# LANGUAGE OverloadedStrings #-}
|
||||
module Main where
|
||||
|
||||
--import Prelude hiding (id)
|
||||
--import Control.Category (id)
|
||||
import Control.Arrow ((>>>), (***), arr)
|
||||
import Control.Monad (forM_)
|
||||
-- import Data.Monoid (mempty, mconcat)
|
||||
|
||||
-- import System.FilePath
|
||||
|
||||
import Hakyll
|
||||
|
||||
|
||||
main :: IO ()
|
||||
main = hakyll $ do
|
||||
|
||||
route "css/*" $ setExtension "css"
|
||||
compile "css/*" $ byExtension (error "Not a (S)CSS file")
|
||||
[ (".css", compressCssCompiler)
|
||||
, (".scss", sass)
|
||||
]
|
||||
|
||||
route "js/**" idRoute
|
||||
compile "js/**" copyFileCompiler
|
||||
|
||||
route "img/*" idRoute
|
||||
compile "img/*" copyFileCompiler
|
||||
|
||||
compile "templates/*" templateCompiler
|
||||
|
||||
forM_ ["test.md", "index.md"] $ \page -> do
|
||||
route page $ setExtension "html"
|
||||
compile page $ pageCompiler
|
||||
>>> applyTemplateCompiler "templates/default.html"
|
||||
>>> relativizeUrlsCompiler
|
||||
|
||||
sass :: Compiler Resource String
|
||||
sass = getResourceString >>> unixFilter "sass" ["-s", "--scss"]
|
||||
>>> arr compressCss
|
||||
|
||||
{% endhighlight %}
|
||||
|
||||
<h3 class="filename">syntax_test.sh</h3>
|
||||
{% highlight sh %}
|
||||
#!/bin/bash
|
||||
|
||||
cd $ROOT_DIR
|
||||
DOT_FILES="lastpass weechat ssh Xauthority"
|
||||
for dotfile in $DOT_FILES; do conform_link "$DATA_DIR/$dotfile" ".$dotfile"; done
|
||||
|
||||
# TODO: refactor with suffix variables (or common cron values)
|
||||
|
||||
case "$PLATFORM" in
|
||||
linux)
|
||||
#conform_link "$CONF_DIR/shell/zshenv" ".zshenv"
|
||||
crontab -l > $ROOT_DIR/tmp/crontab-conflict-arch
|
||||
cd $ROOT_DIR/$CONF_DIR/cron
|
||||
if [[ "$(diff ~/tmp/crontab-conflict-arch crontab-current-arch)" == ""
|
||||
]];
|
||||
then # no difference with current backup
|
||||
logger "$LOG_PREFIX: crontab live settings match stored "\
|
||||
"settings; no restore required"
|
||||
rm ~/tmp/crontab-conflict-arch
|
||||
else # current crontab settings in file do not match live settings
|
||||
crontab $ROOT_DIR/$CONF_DIR/cron/crontab-current-arch
|
||||
logger "$LOG_PREFIX: crontab stored settings conflict with "\
|
||||
"live settings; stored settings restored. "\
|
||||
"Previous settings recorded in ~/tmp/crontab-conflict-arch."
|
||||
fi
|
||||
;;
|
||||
|
||||
{% endhighlight %}
|
||||
|
||||
<h3 class="filename">syntax_test.py</h3>
|
||||
{% highlight py %}
|
||||
# test python (sample from offlineimap)
|
||||
|
||||
class ExitNotifyThread(Thread):
|
||||
"""This class is designed to alert a "monitor" to the fact that a thread has
|
||||
exited and to provide for the ability for it to find out why."""
|
||||
def run(self):
|
||||
global exitthreads, profiledir
|
||||
self.threadid = thread.get_ident()
|
||||
try:
|
||||
if not profiledir: # normal case
|
||||
Thread.run(self)
|
||||
else:
|
||||
try:
|
||||
import cProfile as profile
|
||||
except ImportError:
|
||||
import profile
|
||||
prof = profile.Profile()
|
||||
try:
|
||||
prof = prof.runctx("Thread.run(self)", globals(), locals())
|
||||
except SystemExit:
|
||||
pass
|
||||
prof.dump_stats( \
|
||||
profiledir + "/" + str(self.threadid) + "_" + \
|
||||
self.getName() + ".prof")
|
||||
except:
|
||||
self.setExitCause('EXCEPTION')
|
||||
if sys:
|
||||
self.setExitException(sys.exc_info()[1])
|
||||
tb = traceback.format_exc()
|
||||
self.setExitStackTrace(tb)
|
||||
else:
|
||||
self.setExitCause('NORMAL')
|
||||
if not hasattr(self, 'exitmessage'):
|
||||
self.setExitMessage(None)
|
||||
|
||||
if exitthreads:
|
||||
exitthreads.put(self, True)
|
||||
|
||||
def setExitCause(self, cause):
|
||||
self.exitcause = cause
|
||||
def getExitCause(self):
|
||||
"""Returns the cause of the exit, one of:
|
||||
'EXCEPTION' -- the thread aborted because of an exception
|
||||
'NORMAL' -- normal termination."""
|
||||
return self.exitcause
|
||||
def setExitException(self, exc):
|
||||
self.exitexception = exc
|
||||
def getExitException(self):
|
||||
"""If getExitCause() is 'EXCEPTION', holds the value from
|
||||
sys.exc_info()[1] for this exception."""
|
||||
return self.exitexception
|
||||
def setExitStackTrace(self, st):
|
||||
self.exitstacktrace = st
|
||||
def getExitStackTrace(self):
|
||||
"""If getExitCause() is 'EXCEPTION', returns a string representing
|
||||
the stack trace for this exception."""
|
||||
return self.exitstacktrace
|
||||
def setExitMessage(self, msg):
|
||||
"""Sets the exit message to be fetched by a subsequent call to
|
||||
getExitMessage. This message may be any object or type except
|
||||
None."""
|
||||
self.exitmessage = msg
|
||||
def getExitMessage(self):
|
||||
"""For any exit cause, returns the message previously set by
|
||||
a call to setExitMessage(), or None if there was no such message
|
||||
set."""
|
||||
return self.exitmessage
|
||||
|
||||
{% endhighlight %}
|
||||
|
||||
<h3 class="filename">syntax_test.pl</h3>
|
||||
{% highlight perl %}
|
||||
#!perl -w
|
||||
|
||||
# Time-stamp: <2002/04/06, 13:12:13 (EST), maverick, csvformat.pl>
|
||||
# Two pass CSV file to table formatter
|
||||
|
||||
$delim = $#ARGV >= 1 ? $ARGV[1] : ',';
|
||||
print STDERR "Split pattern: $delim\n";
|
||||
|
||||
# first pass
|
||||
open F, "<$ARGV[0]" or die;
|
||||
while(<F>)
|
||||
{
|
||||
chomp;
|
||||
$i = 0;
|
||||
map { $max[$_->[1]] = $_->[0] if $_->[0] > ($max[$_->[1]] || 0) }
|
||||
(map {[length $_, $i++]} split($delim));
|
||||
}
|
||||
close F;
|
||||
|
||||
print STDERR 'Field width: ', join(', ', @max), "\n";
|
||||
print STDERR join(' ', map {'-' x $_} @max);
|
||||
|
||||
# second pass
|
||||
open F, "<$ARGV[0]" or die;
|
||||
while(<F>)
|
||||
{
|
||||
chomp;
|
||||
$i = 0;
|
||||
map { printf("%-$max[$_->[1]]s ", $_->[0]) }
|
||||
(map {[$_, $i++]} split($delim));
|
||||
print "\n";
|
||||
}
|
||||
close F;
|
||||
|
||||
{% endhighlight %}
|
||||
|
||||
<h3 class="filename">syntax_test.java</h3>
|
||||
{% highlight java %}
|
||||
import java.util.Map;
|
||||
import java.util.TreeSet;
|
||||
|
||||
public class GetEnv {
|
||||
/**
|
||||
* let's test generics
|
||||
* @param args the command line arguments
|
||||
*/
|
||||
public static void main(String[] args) {
|
||||
// get a map of environment variables
|
||||
Map<String, String> env = System.getenv();
|
||||
// build a sorted set out of the keys and iterate
|
||||
for(String k: new TreeSet<String>(env.keySet())) {
|
||||
System.out.printf("%s = %s\n", k, env.get(k));
|
||||
}
|
||||
} }
|
||||
{% endhighlight %}
|
||||
|
||||
<h3 class="filename">syntax_test.c</h3>
|
||||
{% highlight c %}
|
||||
#define UNICODE
|
||||
#include <windows.h>
|
||||
|
||||
int main(int argc, char **argv) {
|
||||
int speed = 0, speed1 = 0, speed2 = 0; // 1-20
|
||||
printf("Set Mouse Speed by Maverick\n");
|
||||
|
||||
SystemParametersInfo(SPI_GETMOUSESPEED, 0, &speed, 0);
|
||||
printf("Current speed: %2d\n", speed);
|
||||
|
||||
if (argc == 1) return 0;
|
||||
if (argc >= 2) sscanf(argv[1], "%d", &speed1);
|
||||
if (argc >= 3) sscanf(argv[2], "%d", &speed2);
|
||||
|
||||
if (argc == 2) // set speed to first value
|
||||
speed = speed1;
|
||||
else if (speed == speed1 || speed == speed2) // alternate
|
||||
speed = speed1 + speed2 - speed;
|
||||
else
|
||||
speed = speed1; // start with first value
|
||||
|
||||
SystemParametersInfo(SPI_SETMOUSESPEED, 0, speed, 0);
|
||||
SystemParametersInfo(SPI_GETMOUSESPEED, 0, &speed, 0);
|
||||
printf("New speed: %2d\n", speed);
|
||||
return 0;
|
||||
}
|
||||
|
||||
{% endhighlight %}
|
77
source/docs/blogging/index.markdown
Normal file
@ -0,0 +1,77 @@
|
||||
---
|
||||
layout: page
|
||||
title: Blogging Basics
|
||||
date: July 19 2011
|
||||
sidebar: false
|
||||
comments: false
|
||||
footer: false
|
||||
---
|
||||
|
||||
Create your first post.
|
||||
|
||||
rake new_post["hello world"]
|
||||
|
||||
This will put a new post with a name like like `2011-07-3-hello-world.markdown` in the `source/_posts` directory.
|
||||
The filename will determine your url, and depending on your [permalink settings](https://github.com/mojombo/jekyll/wiki/Permalinks) your url may end up looking like this
|
||||
`site.com/blog/20011/07/03/hello-world/index.html`.
|
||||
|
||||
New post expects a title and attempts to strip out undesirable url characters when creating the filename.
|
||||
|
||||
rake new_post["Zombie Ninjas Attack: A survivor's retrospective"]
|
||||
# Creates the file
|
||||
source/_posts/2011-07-03-zombie-ninjas-attack-a-survivors-retrospective.markdown
|
||||
|
||||
The default file extension for new posts is `markdown` but you can configure that in the `Rakefile`.
|
||||
Open up your post in a text editor and you'll see a block of [yaml front matter](https://github.com/mojombo/jekyll/wiki/yaml-front-matter)
|
||||
which tells Jekyll how to processes posts and pages.
|
||||
|
||||
---
|
||||
layout: post
|
||||
title: "Hello World"
|
||||
date: 2011-07-03 5:59
|
||||
comments: true
|
||||
categories:
|
||||
---
|
||||
|
||||
If you like, you can turn comments off, add categories for your post. Beneath the yaml block, go ahead and type up a sample post, or use some [inspired filler](http://baconipsum.com/).
|
||||
After you've saved that post you'll want to generate your blog.
|
||||
|
||||
### Generate & Preview
|
||||
|
||||
rake generate # Generates posts and pages into the public directory
|
||||
rake watch # Watches source/ and sass/ for changes and regenerates
|
||||
rake preview # Watches, and mounts a webserver at http://localhost:4000
|
||||
|
||||
Jekyll's built in webbrick server is handy, but if you're a [POW](http://pow.cx) user, you can set it up to work with Octopress like this.
|
||||
|
||||
cd ~/.pow
|
||||
ln -s /path/to/octopress
|
||||
cd -
|
||||
|
||||
Now that you're setup with POW, you'll just run `rake watch` and load up `http://octopress.dev` instead.
|
||||
|
||||
### Pages
|
||||
|
||||
You can add pages anywhere in your blog source directory and they'll be parsed by Jekyll. The URL will correspond directly to the filepath, so `about.markdown` will become `site.com/about.html`. If you prefer the URL `site.com/about/` you'll want to create the page as `about/index.markdown`.
|
||||
Octopress has a rake task for creating new pages easily.
|
||||
|
||||
rake new_page[awesome]
|
||||
# creates
|
||||
/source/awesome/index.markdown
|
||||
|
||||
rake new_page[awesome/page.html]
|
||||
# creates
|
||||
/source/awesome/page.html
|
||||
|
||||
Like with the new post task, the default file extension is `markdown` but you can configure that in the `Rakefile`. A freshly generated page might look like this:
|
||||
|
||||
---
|
||||
layout: page
|
||||
title: "Awesome"
|
||||
date: 2011-07-03 5:59
|
||||
comments: true
|
||||
sharing: true
|
||||
footer: true
|
||||
---
|
||||
|
||||
The title is derived from the filename so you'll likely want to change that. This is very similar to the post yaml except it doesn't include categories, and you can toggle sharing and comments or remove the footer altogehter. If you don't want to show a date on your page, just remove it from the yaml.
|
61
source/docs/configuring/index.markdown
Normal file
@ -0,0 +1,61 @@
|
||||
---
|
||||
layout: page
|
||||
title: Configuring Octopress
|
||||
date: July 19 2011
|
||||
sidebar: false
|
||||
comments: false
|
||||
footer: false
|
||||
---
|
||||
|
||||
[« Previous, Deploying Octopress](/docs/deploy)
|
||||
|
||||
I've tried to keep configuring Octopress fairly simple and Octopress keeps most configurations in two places, the `Rakefile` and the `_config.yml`.
|
||||
Here's a list of files for configuring Octopress.
|
||||
|
||||
_config.yml # Main config (Jekyll's settings)
|
||||
Rakefile # Configs for deployment
|
||||
config.rb # Compass config
|
||||
config.ru # Rack config
|
||||
|
||||
Configurations in the `Rakefile` are mostly related to deployment and you probably won't have to touch them unless you're using rsync.
|
||||
|
||||
## Blog Configuration
|
||||
|
||||
In the `_config.yml` there are three sections for configuring your Octopress Blog.
|
||||
|
||||
### Main Configs
|
||||
|
||||
- **url** - Your blog's full published url. This lets Octopress automatically rewrite relative urls to absolute urls for the RSS feed.
|
||||
- **title** - Your blog's title is used in the header and title tag for your pages.
|
||||
- **subtitle** - A further description for your blog. This appears beneath the Main header.
|
||||
- **author** - Your name (for RSS, Copyright, and metadata) If this is a multi-author blog, you can set author in the yaml front matter of each blog post instead.
|
||||
- **simple_search** - Queries entered in the search form, are constructed as a site search query eg. `search phrase site:yoursite.com`. Here you can set the search engine it uses (defaults to Google).
|
||||
- **subscribe_rss** - Enter a url for your blog's RSS feed Defaults to `/atom.xml` an ATOM feed generated by Octopress
|
||||
- **subscribe_email** - Enter a url for your blog's email subscription link (if you have one). Octopress does not provide this.
|
||||
- **email** - (Optional) fills in the email property of the RSS feed.
|
||||
|
||||
### Jekyll & Plugins
|
||||
If you're not familiar with Jekyll, you should probably have a look at the [configuration docs](https://github.com/mojombo/jekyll/wiki/Configuration)
|
||||
|
||||
- **root** - Leave this blank unless you're deploying to a subdirectory. For more info see [Deploying Octopress](/setup/deploy/)
|
||||
- **port** - Specify a port for Jekyll's built in webbrick server.
|
||||
- **permalink** - See [Jekyll's permalink docs](https://github.com/mojombo/jekyll/wiki/Permalinks) if you want to change the way permalinks are written for your blog posts.
|
||||
- **source** - The source directory for your blog, no need to change this.
|
||||
- **destination** - The folder where the generated blog files will be written.
|
||||
- **plugins** - The plugins directory.
|
||||
- **markdown** - Choose your Markdown processor (rdiscount or kramdown).
|
||||
- **pygments** - Enable or disable pygments syntax highlighting.
|
||||
- **paginate** - Set the number of posts per page in your blog index.
|
||||
- **recent_posts** - Set the number of recent posts to appear in the sidebar section.
|
||||
|
||||
### 3rd Party Settings
|
||||
These third party integrations are already set up for you. Simply fill in the configurations and they'll be added to your site.
|
||||
|
||||
- **Twitter** - Setup a sidebar twitter feed, follow button, and tweet button (for sharing posts and pages).
|
||||
- **Google Plus One** - Setup sharing for posts and pages on Google's plus one network.
|
||||
- **Pinboard** - Share your recent Pinboard bookmarks in the sidebar.
|
||||
- **Delicious** - Share your recent Delicious bookmarks in the sidebar.
|
||||
- **Disqus Comments** - Add your disqus short name to enable disqus comments on your site.
|
||||
- **Google Analytics** - Add your tracking id to enable Google Analytics tracking for your site.
|
||||
|
||||
[Next, Blogging With Octopress »](/docs/blogging)
|
84
source/docs/deploying/index.markdown
Normal file
@ -0,0 +1,84 @@
|
||||
---
|
||||
layout: page
|
||||
title: Deploying Octopress
|
||||
date: July 18 2011
|
||||
sidebar: false
|
||||
comments: false
|
||||
footer: false
|
||||
---
|
||||
|
||||
[« Previous, Octopress Setup](/docs/setup)
|
||||
|
||||
### Deploying with Rsync via SSH
|
||||
|
||||
Add your server configurations to the `Rakefile` under Rsync deploy config. To deploy with Rsync, be sure your public key is listed in your server's `~/.ssh/authorized_keys` file.
|
||||
|
||||
ssh_user = "user@domain.com"
|
||||
document_root = "~/website.com/"
|
||||
deploy_default = "rsync"
|
||||
|
||||
Now if you run `rake deploy` in your terminal, your `public` directory will be synced to your server's document root.
|
||||
|
||||
### Deploying to Github Pages
|
||||
|
||||
To setup deployment, you'll want to clone your target repository into the `_deploy` directory in your Octopress project.
|
||||
If you're using Github project pages, clone the repository for that project, eg `git@github.com:username/project.git`.
|
||||
If you're using Github user or organization pages, clone the repository `git@github.com:usernem/username.github.com.git`.
|
||||
|
||||
# For Github project pages:
|
||||
git clone git@github.com:username/project.git _deploy
|
||||
rake config_deploy[gh-pages]
|
||||
|
||||
# For Github user/organization pages:
|
||||
git clone git@github.com:username/username.github.com _deploy
|
||||
rake config_deploy[master]
|
||||
|
||||
# Now to deploy, you'll run
|
||||
rake deploy
|
||||
|
||||
The `config_deploy` rake task takes a branch name as an argument and creates a [new empty branch](http://book.git-scm.com/5_creating_new_empty_branches.html), and adds an initial commit.
|
||||
This also sets `deploy_default = "push"` in your `_config.yml` and prepares your branch for easy deployment. The `rake deploy` task copies the generated blog from the `public` directory to the `_deploy` directory, adds new files, removes old files, sets a commit message, and pushes to Github.
|
||||
Github will queue your site for publishing (which usually occurs instantly or within minutes if it's your first commit).
|
||||
|
||||
|
||||
### Deploying to a Subdirectory (Github Project Pages does this)
|
||||
|
||||
If you're deploying to a subdirectory on your site, or if you're using Github's project pages, make sure you set up your urls correctly in your configs.
|
||||
You can do this *almost* automatically:
|
||||
|
||||
rake set_root_dir[your/path]
|
||||
|
||||
# To go back to publishing to the document root
|
||||
rake set_root_dir[/]
|
||||
|
||||
Then update your `_config.yml` and `Rakefile` as follows:
|
||||
|
||||
# _config.yml
|
||||
url: http://yoursite.com/your/path
|
||||
|
||||
# Rakefile (if deploying with rsync)
|
||||
document_root = "~/yoursite.com/your/path"
|
||||
|
||||
To manually configure deployment to a subdirectory, you'll change `_config.yml`, `config.rb` and `Rakefile`.
|
||||
Here's an example for deploying the Octopress website to Github Project Pages:
|
||||
|
||||
# _config.yml
|
||||
destination: public/octopress
|
||||
url: http://imathis.github.com/octopress
|
||||
subscribe_rss: /octopress/atom.xml
|
||||
root: /octopress
|
||||
|
||||
# config.rb - for Compass & Sass
|
||||
http_path = "/octopress"
|
||||
http_images_path = "/octopress/images"
|
||||
http_fonts_path = "/octopress/fonts"
|
||||
css_dir = "public/octopress/stylesheets"
|
||||
|
||||
# Rakefile
|
||||
public_dir = "public/octopress"
|
||||
# If deploying with rsync, update your Rakefile path
|
||||
document_root = "~/yoursite.com/your/path"
|
||||
|
||||
For more info on deploying a Jekyll Blog, checkout [Jekyll's deployment wiki page](https://github.com/mojombo/jekyll/wiki/Deployment).
|
||||
|
||||
[Next, Configuring Octopress »](/docs/configuring)
|
43
source/docs/index.markdown
Normal file
@ -0,0 +1,43 @@
|
||||
---
|
||||
layout: page
|
||||
title: Octopress Documentation
|
||||
date: July 18 2011
|
||||
sidebar: false
|
||||
comments: false
|
||||
footer: false
|
||||
---
|
||||
|
||||
Octopress is a framework designed for Jekyll, the static blogging engine powering Github Pages. So what is Jekyll?
|
||||
|
||||
{% blockquote Jekyll Wiki https://github.com/mojombo/jekyll/wiki/Usage %}
|
||||
Jekyll at its core is a text transformation engine. The concept behind the system is this: you give it text written in your favorite markup language, be that Markdown, Textile, or just plain HTML, and it churns that through a layout or series of layout files. Throughout that process you can tweak how you want the site URLs to look, what data gets displayed on the layout and more.
|
||||
{% endblockquote %}
|
||||
|
||||
## Getting Started
|
||||
- [Initial setup](/docs/setup)
|
||||
- [Deploying Octopress](/docs/deploying)
|
||||
- [Basic Configuration](/docs/configuring)
|
||||
- [Updating](/docs/updating)
|
||||
|
||||
## Using Octopress
|
||||
- [Blogging Basics](/docs/blogging)
|
||||
- [Sharing Code Snippets](/docs/blogging/code)
|
||||
- [Syntax Highlighting Test](/docs/blogging/code/test)
|
||||
- [Blogging With Plugins](/docs/blogging/plugins)
|
||||
- [Theming & Customization](/docs/theming)
|
||||
|
||||
## Octopress Plugins - Usage & Examples
|
||||
- Code Block
|
||||
- Include Code
|
||||
- Gist Tag
|
||||
- Include Partial
|
||||
- Figure Tag
|
||||
- Blockquote
|
||||
- Pullquote
|
||||
- Custom filters
|
||||
- Sitemap Generator
|
||||
- Category Generator
|
||||
- Compass Compiler
|
||||
- Haml Convertor
|
||||
- Pygments Cache
|
||||
- Titlecase
|
44
source/docs/setup/index.markdown
Normal file
@ -0,0 +1,44 @@
|
||||
---
|
||||
layout: page
|
||||
title: Octopress Setup
|
||||
date: July 18 2011
|
||||
sidebar: false
|
||||
comments: false
|
||||
footer: false
|
||||
---
|
||||
|
||||
|
||||
[Create a new repository](https://github.com/repositories/new) for your website then
|
||||
open up a terminal and follow along. If you plan to host your site on [Github Pages](http://pages.github.com) for a user or organization, make sure the
|
||||
repository is named `your_username.github.com` or `your_organization.github.com`.
|
||||
|
||||
mkdir my_octopress_site
|
||||
cd my_octopress_site
|
||||
git init
|
||||
git remote add octopress git://github.com/imathis/octopress.git
|
||||
git pull octopress master
|
||||
git remote add origin (your repository url)
|
||||
git push origin master
|
||||
|
||||
# Next, if you're using Github user or organization pages,
|
||||
# Create a source branch and push to origin source.
|
||||
git branch source
|
||||
git push origin source
|
||||
|
||||
|
||||
Next, setup an [RVM](http://beginrescueend.com/) and install dependencies.
|
||||
|
||||
rvm rvmrc trust
|
||||
bundle install
|
||||
|
||||
# Install pygments (for syntax highlighing)
|
||||
sudo easy_install pip
|
||||
sudo pip install pygments
|
||||
|
||||
Install the default Octopress theme,
|
||||
|
||||
rake install
|
||||
|
||||
and you should be all set up to begin blogging with Octopress.
|
||||
|
||||
[Next, Deploying Octopress »](/docs/deploying)
|
9
source/docs/theming/index.markdown
Normal file
@ -0,0 +1,9 @@
|
||||
---
|
||||
layout: page
|
||||
title: "Theming & Customization"
|
||||
date: 2011-07-19 18:16
|
||||
sidebar: false
|
||||
footer: false
|
||||
---
|
||||
|
||||
WooHoo!
|
20
source/downloads/code/javascripts/test.js
Normal file
@ -0,0 +1,20 @@
|
||||
/**
|
||||
sample javascript from xui
|
||||
*/
|
||||
|
||||
var undefined,
|
||||
xui,
|
||||
window = this,
|
||||
string = new String('string'),
|
||||
document = window.document,
|
||||
simpleExpr = /^#?([\w-]+)$/,
|
||||
idExpr = /^#/,
|
||||
tagExpr = /<([\w:]+)/,
|
||||
slice = function (e) { return [].slice.call(e, 0); };
|
||||
try { var a = slice(document.documentElement.childNodes)[0].nodeType; }
|
||||
catch(e){ slice = function (e) { var ret=[]; for (var i=0; e[i]; i++)
|
||||
ret.push(e[i]); return ret; }; }
|
||||
|
||||
window.x$ = window.xui = xui = function(q, context) {
|
||||
return new xui.fn.find(q, context);
|
||||
};
|
BIN
source/images/bird_32_gray.png
Normal file
After Width: | Height: | Size: 1.3 KiB |
BIN
source/images/bird_32_gray_fail.png
Normal file
After Width: | Height: | Size: 615 B |
BIN
source/images/code_bg.png
Normal file
After Width: | Height: | Size: 239 B |
BIN
source/images/dotted-border.png
Normal file
After Width: | Height: | Size: 99 B |
BIN
source/images/email.png
Normal file
After Width: | Height: | Size: 301 B |