Skip to content

HTTPS clone URL

Subversion checkout URL

You can clone with HTTPS or Subversion.

Download ZIP
Browse files

added git project

  • Loading branch information...
commit 3b0fb9cf7facb4333fe26230bfad8af232600db5 1 parent 31f2cfa
@jasonlong authored
Showing with 253 additions and 134 deletions.
  1. +4 −3 README.md
  2. 0  app/asset-types/asset-factory.inc.php
  3. 0  app/asset-types/asset.inc.php
  4. 0  app/asset-types/html.inc.php
  5. 0  app/asset-types/image.inc.php
  6. +21 −2 app/asset-types/page.inc.php
  7. 0  app/asset-types/video.inc.php
  8. +2 −2 app/cache.inc.php
  9. +5 −2 app/helpers.inc.php
  10. +8 −1 app/page-data.inc.php
  11. +57 −0 app/parsers/json-minifier.inc.php
  12. +1 −1  app/parsers/markdown-parser.inc.php
  13. +22 −3 app/parsers/template-parser.inc.php
  14. +1 −1  app/stacey.inc.php
  15. +3 −0  content/1.index/index.txt
  16. BIN  content/2.work/13.git/01.png
  17. BIN  content/2.work/13.git/02.png
  18. BIN  content/2.work/13.git/03.png
  19. BIN  content/2.work/13.git/04.png
  20. BIN  content/2.work/13.git/05.png
  21. +5 −0 content/2.work/13.git/project.txt
  22. BIN  content/2.work/13.git/thumb.png
  23. +3 −0  content/2.work/projects.txt
  24. 0  content/2.work/{2.reviewshine → reviewshine}/01.jpg
  25. 0  content/2.work/{2.reviewshine → reviewshine}/02.jpg
  26. 0  content/2.work/{2.reviewshine → reviewshine}/03.jpg
  27. 0  content/2.work/{2.reviewshine → reviewshine}/project.txt
  28. 0  content/2.work/{2.reviewshine → reviewshine}/thumb.jpg
  29. +3 −0  content/3.play/play.txt
  30. +68 −68 public/docs/css/sass/screen.scss
  31. +1 −2  public/docs/css/screen.css
  32. +49 −49 templates/index.html
View
7 README.md
@@ -1,4 +1,5 @@
## Overview
+
I've made this repo public so that it might help others learn from how it is put together. And better yet, maybe someone will let me know about things that could be improved (though I have a list of improvements to make already). Please feel free to download the code or fork it for your own spelunking, but please don't copy it wholesale as if you built it.
The site is built on Stacey (<http://staceyapp.com>). This is a great little CMS that doesn't require a backend database. All of the content and assets are stored in directories. It's a perfect system for lightweight portfolio sites.
@@ -9,12 +10,12 @@ A few of the things you may find nifty:
* Page content fades in once TypeKit fonts load (to avoid "flash of unstyled content").
* Pseudo-parallax effect for the background while scrolling.
-* Animated portfolio section - lots 'o animation and AJAX via MooTools.
+* Animated portfolio section - lots 'o animation and AJAX via MooTools.
* Animated contact form (3D transform for flipping the form in WebKit).
* Modernizr for detecting browser capabilities (ie. supplying fallback effect for 3D transforms).
* Contact form uses inline validation via MooTools.
* Contact form spam detection with Akismet
-* -webkit-transitions for subtle hover state transitions
+* -webkit-transitions for subtle hover state transitions
* Sass for generating CSS (I use the sass-watch script).
* hCard microformat for contact info.
* Capistrano used for simple deployment.
@@ -23,5 +24,5 @@ A few of the things you may find nifty:
* Add HTML5 History API for portfolio navigation (see <http://html5demos.com/history>)
* Create mobile version.
-* Create larger pool of entries for Play section and pull 4 random ones.
+* Create larger pool of entries for Play section and pull 4 random ones.
* Refactor giant/fugly JS functions
View
0  app/asset-types/asset-factory.inc.php 100644 → 100755
File mode changed
View
0  app/asset-types/asset.inc.php 100644 → 100755
File mode changed
View
0  app/asset-types/html.inc.php 100644 → 100755
File mode changed
View
0  app/asset-types/image.inc.php 100644 → 100755
File mode changed
View
23 app/asset-types/page.inc.php 100644 → 100755
@@ -6,6 +6,7 @@
var $file_path;
var $template_name;
var $template_file;
+ var $template_type;
var $data;
var $all_pages;
@@ -16,6 +17,7 @@ function __construct($url) {
$this->template_name = self::template_name($this->file_path);
$this->template_file = self::template_file($this->template_name);
+ $this->template_type = self::template_type($this->template_file);
# create/set all content variables
PageData::create($this);
@@ -29,7 +31,19 @@ function __construct($url) {
}
function parse_template() {
- return TemplateParser::parse($this->data, file_get_contents($this->template_file));
+ $data = TemplateParser::parse($this->data, file_get_contents($this->template_file));
+
+ # post-parse JSON
+ if (strtolower($this->template_type) == 'json') {
+ # minfy it
+ $data = json_minify($data);
+ # strip any trailing commas
+ # (run it twice to get partial matches)
+ $data = preg_replace('/([}\]"]),([}\]])/', '$1$2', $data);
+ $data = preg_replace('/([}\]"]),([}\]])/', '$1$2', $data);
+ }
+
+ return $data;
}
# magic variable assignment
@@ -38,10 +52,15 @@ function __set($name, $value) {
$this->data[$prefix.strtolower($name)] = $value;
}
+ static function template_type($template_file) {
+ preg_match('/\.([\w\d]+?)$/', $template_file, $ext);
+ return isset($ext[1]) ? $ext[1] : false;
+ }
+
static function template_name($file_path) {
$txts = array_keys(Helpers::list_files($file_path, '/\.txt$/'));
# return first matched .txt file
- return (!empty($txts)) ? preg_replace('/\.txt$/', '', $txts[0]) : false;
+ return (!empty($txts)) ? preg_replace('/([^.]*\.)?([^.]*)\.txt$/', '\\2', $txts[0]) : false;
}
static function template_file($template_name) {
View
0  app/asset-types/video.inc.php 100644 → 100755
File mode changed
View
4 app/cache.inc.php 100644 → 100755
@@ -39,7 +39,7 @@ function create($route) {
ob_start();
echo $page->parse_template();
# if cache folder is writable, write to it
- if(is_writable('./app/_cache')) $this->write_cache();
+ if(is_writable('./app/_cache') && !$page->data['@bypass_cache']) $this->write_cache();
else if ($this->is_commentable()) echo "\n".$this->comment_tags['begin'].' Stacey('.Stacey::$version.'). '.$this->comment_tags['end'];
# end buffer
ob_end_flush();
@@ -56,7 +56,7 @@ function expired() {
function get_current_hash() {
preg_match('/Stacey.*: (.+?)\s/', file_get_contents($this->cachefile), $matches);
- return $matches[1];
+ return isset($matches[1]) ? $matches[1] : false;
}
function write_cache() {
View
7 app/helpers.inc.php 100644 → 100755
@@ -53,7 +53,8 @@ static function has_children($dir) {
static function file_cache($dir = false) {
if(!self::$file_cache) {
# build file cache
- self::build_file_cache();
+ self::build_file_cache('./content');
+ self::build_file_cache('./templates');
}
if($dir && !self::$file_cache[$dir]) return array();
return $dir ? self::$file_cache[$dir] : self::$file_cache;
@@ -61,7 +62,9 @@ static function file_cache($dir = false) {
static function build_file_cache($dir = '.') {
# build file cache
- foreach(glob($dir.'/*') as $path) {
+ $files = glob($dir.'/*');
+ $files = is_array($files) ? $files : array();
+ foreach($files as $path) {
$file = basename($path);
if(substr($file, 0, 1) == "." || $file == "_cache") continue;
if(is_dir($path)) self::build_file_cache($path);
View
9 app/page-data.inc.php 100644 → 100755
@@ -107,7 +107,7 @@ static function create_vars($page) {
# @permalink
$page->permalink = Helpers::modrewrite_parse($page->url_path.'/');
# @slug
- $split_url = explode("/", $page->url_path);
+ $split_url = explode("/", $page->url_path);
$page->slug = $split_url[count($split_url) - 1];
# @page_name
$page->page_name = ucfirst(preg_replace('/[-_](.)/e', "' '.strtoupper('\\1')", $page->data['@slug']));
@@ -142,6 +142,10 @@ static function create_vars($page) {
$page->is_last = $page->data['@index'] == $page->data['@siblings_count'];
# @is_first
$page->is_first = $page->data['@index'] == 1;
+
+ # @cache_page
+ $page->bypass_cache = isset($page->data['@bypass_cache']) ? $page->data['@bypass_cache'] : false;
+
}
static function create_collections($page) {
@@ -190,6 +194,9 @@ static function create_textfile_vars($page) {
# include shared variables for each page
$shared = (file_exists('./content/_shared.txt')) ? file_get_contents('./content/_shared.txt') : '';
+ # strip any $n matches from the text, as this will mess with any preg_replaces
+ # they get put back in after the template has finished being parsed
+ $text = preg_replace('/\$(\d+)/', "\x02$1", $text);
# remove UTF-8 BOM and marker character in input, if present
$merged_text = preg_replace('/^\xEF\xBB\xBF|\x1A/', '', array($shared, $text));
View
57 app/parsers/json-minifier.inc.php
@@ -0,0 +1,57 @@
+<?php
+
+/*! JSON.minify()
+ v0.1 (c) Kyle Simpson
+ MIT License
+*/
+
+function json_minify($json) {
+ $tokenizer = "/\"|(\/\*)|(\*\/)|(\/\/)|\n|\r/";
+ $in_string = false;
+ $in_multiline_comment = false;
+ $in_singleline_comment = false;
+ $tmp; $tmp2; $new_str = array(); $ns = 0; $from = 0; $lc; $rc; $lastIndex = 0;
+
+ while (preg_match($tokenizer,$json,$tmp,PREG_OFFSET_CAPTURE,$lastIndex)) {
+ $tmp = $tmp[0];
+ $lastIndex = $tmp[1] + strlen($tmp[0]);
+ $lc = substr($json,0,$lastIndex - strlen($tmp[0]));
+ $rc = substr($json,$lastIndex);
+ if (!$in_multiline_comment && !$in_singleline_comment) {
+ $tmp2 = substr($lc,$from);
+ if (!$in_string) {
+ $tmp2 = preg_replace("/(\n|\r|\s)*/","",$tmp2);
+ }
+ $new_str[] = $tmp2;
+ }
+ $from = $lastIndex;
+
+ if ($tmp[0] == "\"" && !$in_multiline_comment && !$in_singleline_comment) {
+ preg_match("/(\\\\)*$/",$lc,$tmp2);
+ if (!$in_string || !$tmp2 || (strlen($tmp2[0]) % 2) == 0) { // start of string with ", or unescaped " character found to end string
+ $in_string = !$in_string;
+ }
+ $from--; // include " character in next catch
+ $rc = substr($json,$from);
+ }
+ else if ($tmp[0] == "/*" && !$in_string && !$in_multiline_comment && !$in_singleline_comment) {
+ $in_multiline_comment = true;
+ }
+ else if ($tmp[0] == "*/" && !$in_string && $in_multiline_comment && !$in_singleline_comment) {
+ $in_multiline_comment = false;
+ }
+ else if ($tmp[0] == "//" && !$in_string && !$in_multiline_comment && !$in_singleline_comment) {
+ $in_singleline_comment = true;
+ }
+ else if (($tmp[0] == "\n" || $tmp[0] == "\r") && !$in_string && !$in_multiline_comment && $in_singleline_comment) {
+ $in_singleline_comment = false;
+ }
+ else if (!$in_multiline_comment && !$in_singleline_comment && !(preg_match("/\n|\r|\s/",$tmp[0]))) {
+ $new_str[] = $tmp[0];
+ }
+ }
+ $new_str[] = $rc;
+ return implode("",$new_str);
+}
+
+?>
View
2  app/parsers/markdown-parser.inc.php
@@ -1767,7 +1767,7 @@ function teardown() {
### HTML Block Parser ###
# Tags that are always treated as block tags:
- var $block_tags_re = 'p|div|h[1-6]|blockquote|pre|table|dl|ol|ul|address|form|fieldset|iframe|hr|legend';
+ var $block_tags_re = 'p|div|h[1-6]|blockquote|pre|table|dl|ol|ul|address|form|fieldset|iframe|hr|legend|article|aside|audio|figure|footer|header|hgroup|nav|section|video';
# Tags treated as block tags only if the opening tag is alone on it's line:
var $context_block_tags_re = 'script|noscript|math|ins|del';
View
25 app/parsers/template-parser.inc.php 100644 → 100755
@@ -20,7 +20,14 @@ static function get_partial_template($name) {
foreach(self::$partials as $partial) {
if(preg_match('/([^\/]+?)\.[\w]+?$/', $partial, $file_name)) {
- if($file_name[1] == $name) return file_get_contents($partial);
+ //if($file_name[1] == $name) return file_get_contents($partial);
+ if($file_name[1] == $name) {
+ ob_start();
+ include $partial;
+ $ob_contents = ob_get_contents();
+ ob_end_clean();
+ return $ob_contents;
+ }
}
}
return 'Partial \''.$name.'\' not found';
@@ -80,6 +87,8 @@ static function parse($data, $template) {
# we've finished parsing, so return any remaining @ symbols
$template = str_replace("\x01", '@', $template);
+ # put back any $ characters
+ $template = str_replace("\x02", '$', $template);
return $template;
}
@@ -124,15 +133,25 @@ static function parse_foreach($data, $template) {
preg_match('/([\S\s]*?)foreach[\s]+?([\$\@].+?)\s+?do\s+?([\S\s]+?)endforeach([\S\s]*)$/', $template, $template_parts);
# run the replacements on the pre-"foreach" part of the partial
$template = self::parse($data, $template_parts[1]);
-
+ # allow loop limiting
+ if(preg_match('/\[\d*:\d*\]$/', $template_parts[2])) {
+ preg_match('/([\$\@].+?)\[(\d*):(\d*)\]$/', $template_parts[2], $matches);
+ $template_parts[2] = $matches[1];
+ $start_limit = empty($matches[2]) ? 0 : $matches[2];
+ if (!empty($matches[3])) $end_limit = $matches[3];
+ }
# traverse one level deeper into the data hierachy
$pages = (isset($data[$template_parts[2]]) && is_array($data[$template_parts[2]]) && !empty($data[$template_parts[2]])) ? $data[$template_parts[2]] : false;
+ # slice down the data array if required
+ if(is_array($pages) && isset($start_limit)) {
+ $pages = array_slice($pages, $start_limit, $end_limit);
+ }
+
# check for any nested matches
$template_parts = self::test_nested_matches($template_parts, 'foreach[\s]+?[\$\@].+?\s+?do\s+?', 'endforeach');
if($pages) {
-
foreach($pages as $data_item) {
# transform data_item into its appropriate Object
$data_object =& AssetFactory::get($data_item);
View
2  app/stacey.inc.php
@@ -2,7 +2,7 @@
Class Stacey {
- static $version = '2.2.2';
+ static $version = '2.3.0';
var $route;
View
3  content/1.index/index.txt
@@ -0,0 +1,3 @@
+title: Black Ant Media
+
+page_description: Porfolio of Jason Long
View
BIN  content/2.work/13.git/01.png
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
View
BIN  content/2.work/13.git/02.png
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
View
BIN  content/2.work/13.git/03.png
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
View
BIN  content/2.work/13.git/04.png
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
View
BIN  content/2.work/13.git/05.png
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
View
5 content/2.work/13.git/project.txt
@@ -0,0 +1,5 @@
+title: Git
+-
+services: Logo Design / UI Design / HTML / CSS / Javascript
+-
+description: I created an updated identity and web presence for the Git version control system. Working with a small team from GitHub, we created a new site that houses documentation, downloads, screencasts, and the entire Pro Git book. The logo and all of the other graphical assets I created are Creative Commons-licensed.
View
BIN  content/2.work/13.git/thumb.png
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
View
3  content/2.work/projects.txt
@@ -0,0 +1,3 @@
+title: Black Ant Media
+
+page_description: Porfolio of Jason Long
View
0  content/2.work/2.reviewshine/01.jpg → content/2.work/reviewshine/01.jpg
File renamed without changes
View
0  content/2.work/2.reviewshine/02.jpg → content/2.work/reviewshine/02.jpg
File renamed without changes
View
0  content/2.work/2.reviewshine/03.jpg → content/2.work/reviewshine/03.jpg
File renamed without changes
View
0  content/2.work/2.reviewshine/project.txt → content/2.work/reviewshine/project.txt
File renamed without changes
View
0  content/2.work/2.reviewshine/thumb.jpg → content/2.work/reviewshine/thumb.jpg
File renamed without changes
View
3  content/3.play/play.txt
@@ -0,0 +1,3 @@
+title: Black Ant Media
+
+page_description: Porfolio of Jason Long
View
136 public/docs/css/sass/screen.scss
@@ -1,10 +1,10 @@
// variables
-// ----------------------------------------------------------------------
+// ----------------------------------------------------------------------
$green: #2dbc24;
$default_text_shadow: 1px 1px rgba(0, 0, 0, 0.2);
// mix-ins
-// ----------------------------------------------------------------------
+// ----------------------------------------------------------------------
@mixin rounded($radius: 3px) {
-webkit-border-radius: $radius;
-moz-border-radius: $radius;
@@ -18,8 +18,8 @@ $default_text_shadow: 1px 1px rgba(0, 0, 0, 0.2);
@mixin box-shadow($attributes: 1px 1px 2px rgba(0,0,0,0.3)) {
-webkit-box-shadow: $attributes;
- -moz-box-shadow: $attributes;
- box-shadow: $attributes;
+ -moz-box-shadow: $attributes;
+ box-shadow: $attributes;
}
@mixin clearfix {
@@ -34,14 +34,14 @@ $default_text_shadow: 1px 1px rgba(0, 0, 0, 0.2);
}
// structural
-// ----------------------------------------------------------------------
+// ----------------------------------------------------------------------
body {
- font-family: "ronnia-1","ronnia-2",helvetica,arial,sans-serif;
+ font-family: "ronnia-1","ronnia-2",helvetica,arial,sans-serif;
background-color: #0f0705;
color: #fff;
font-size: 16px;
line-height: 1.4em;
- text-shadow: $default_text_shadow;
+ text-shadow: $default_text_shadow;
}
a {
color: $green;
@@ -72,8 +72,8 @@ img#bg {
opacity: 0;
}
#github-banner {
- background-color: rgba(0, 0, 0, 0.8);
- border-bottom: solid 1px $green;
+ background-color: rgba(0, 0, 0, 0.4);
+// border-bottom: solid 1px $green;
color: $green;
text-align: center;
position: relative;
@@ -111,7 +111,7 @@ p {
}
// header
-// ----------------------------------------------------------------------
+// ----------------------------------------------------------------------
header {
h1 {
text-align: center;
@@ -122,7 +122,7 @@ header {
margin-top: 1.4em;
margin-bottom: 0.3em;
opacity: 0.97;
- text-shadow: 0 0 50px rgba(0, 0, 0, 0.2), $default_text_shadow;
+ text-shadow: 0 0 50px rgba(0, 0, 0, 0.2), $default_text_shadow;
}
.no-fontface h1 {
font-size: 32px;
@@ -148,14 +148,14 @@ header {
span {
opacity: 0.7;
}
- }
- h1 + p em {
+ }
+ h1 + p em {
font-style: normal;
}
img#logo {
position: relative;
top: 26px;
- }
+ }
/* nav */
nav {
position: absolute;
@@ -175,18 +175,18 @@ header {
@include background-transition;
&:hover {
- color: $green;
+ color: $green;
}
}
- }
+ }
}
// sections
-// ----------------------------------------------------------------------
+// ----------------------------------------------------------------------
section {
margin-top: 2em;
@include clearfix;
-
+
h2 {
color: #f9f9f8;
font-size: 28px;
@@ -212,10 +212,10 @@ section#contact h2 {
}
section#colophon h2 {
background: transparent url(/images/icon-colophon.png) 0 0 no-repeat;
-}
+}
// portfolio
-// ----------------------------------------------------------------------
+// ----------------------------------------------------------------------
#portfolio-wrapper {
height: 426px;
position: relative;
@@ -246,7 +246,7 @@ section#colophon h2 {
ol {
width: 300px;
-
+
li {
float: none;
display: block;
@@ -262,7 +262,7 @@ section#colophon h2 {
ol {
width: 300px;
-
+
li {
float: none;
display: block;
@@ -305,7 +305,7 @@ section#colophon h2 {
left: 550px;
background: transparent url(/images/ss_nav_next.png) 0 0 no-repeat;
}
-
+
ul {
list-style: none;
width: 570px;
@@ -374,7 +374,7 @@ ol#portfolio li a:hover img {
}
// play
-// ----------------------------------------------------------------------
+// ----------------------------------------------------------------------
section#play {
position: relative;
}
@@ -393,7 +393,7 @@ ul#experiments li {
}
ul#experiments li a {
- color: #fff;
+ color: #fff;
h5 img {
padding-left: 0.3em;
@@ -427,7 +427,7 @@ ul#experiments li p {
padding: 16px 0 8px 16px;
background: #181517;
background: rgba(40, 40, 40, 0.4);
- @include rounded(4px);
+ @include rounded(4px);
}
#social ul {
@@ -483,7 +483,7 @@ ul#experiments li p {
// mugshot
-// ----------------------------------------------------------------------
+// ----------------------------------------------------------------------
section#about img {
float: right;
margin: -2em 1em 1em 1em;
@@ -494,31 +494,31 @@ section#about img {
}
// contact form
-// ----------------------------------------------------------------------
+// ----------------------------------------------------------------------
section#contact {
position: relative;
}
#contact-wrapper {
float: left;
- width: 590px;
- height: 338px;
- position: relative;
+ width: 590px;
+ height: 338px;
+ position: relative;
z-index: 100;
.inner {
- width: 590px;
- height: 338px;
+ width: 590px;
+ height: 338px;
-webkit-perspective: 1000;
- float: left;
- position: absolute;
+ float: left;
+ position: absolute;
.front {
z-index: 20;
}
.back {
- width: 590px;
- height: 338px;
+ width: 590px;
+ height: 338px;
-webkit-transform: rotateX(180deg);
z-index: 10;
font-family: "skippy-sharp-1","skippy-sharp-2", Georgia, helvetica,sans-serif;
@@ -526,8 +526,8 @@ section#contact {
}
.card {
- width: 590px;
- height: 338px;
+ width: 590px;
+ height: 338px;
-webkit-transform-style: preserve-3d;
-webkit-transition: 0.5s;
}
@@ -538,7 +538,7 @@ section#contact {
}
#contact-wrapper.flip .card {
- -webkit-transform: rotateX(180deg);
+ -webkit-transform: rotateX(180deg);
}
.no-csstransforms3d #contact-wrapper .inner .back {
@@ -546,49 +546,49 @@ section#contact {
}
#form-wrapper {
- width: 566px;
+ width: 566px;
background-color: #282222;
- padding: 12px;
+ padding: 12px;
opacity: 0.9;
-webkit-border-radius: 3px;
-moz-border-radius: 3px;
- border-radius: 3px;
+ border-radius: 3px;
}
#envelope {
background: #dbc09a url(/images/texture-envelope.jpg) 0 0 repeat;
- -webkit-backface-visibility : hidden;
+ -webkit-backface-visibility : hidden;
-webkit-transform: rotateX(180deg);
width: 590px;
height: 198px !important;
position: absolute;
top: 0;
left: 0;
- @include rounded(3px);
- font-size: 40px;
+ @include rounded(3px);
+ font-size: 40px;
line-height: 1em;
- text-shadow: none;
+ text-shadow: none;
color: #333;
text-align: center;
padding-top: 140px;
-webkit-border-radius: 3px;
-moz-border-radius: 3px;
- border-radius: 3px;
+ border-radius: 3px;
img {
position: absolute;
top: 10px;
- right: 10px;
+ right: 10px;
}
}
form {
margin-top: 8px;
padding: 15px;
- @include rounded(3px);
+ @include rounded(3px);
background-color: #2e2727;
border: solid 1px #211c1c;
- @include box-shadow(inset 0 0px 30px rgba(0,0,0,0.3));
+ @include box-shadow(inset 0 0px 30px rgba(0,0,0,0.3));
@include clearfix;
label {
@@ -598,7 +598,7 @@ form {
float: left;
line-height: 1.8em;
color: #c4c0c0;
- }
+ }
sup {
color: $green;
}
@@ -616,25 +616,25 @@ form {
@include rounded(3px);
font-family: helvetica,arial;
border: solid 1px #211c1c;
- @include box-shadow(0 1px 0 rgba(69, 69, 69, 1));
- }
+ @include box-shadow(0 1px 0 rgba(69, 69, 69, 1));
+ }
textarea {
width: 390px;
height: 108px;
float: right;
font-size: 14px;
padding: 0.4em 0.3em;
- color: #fff;
+ color: #fff;
background-color: #282222;
- @include rounded(3px);
- font-family: helvetica,arial;
- border: solid 1px #211c1c;
- @include box-shadow(0 1px 0 rgba(69, 69, 69, 1));
+ @include rounded(3px);
+ font-family: helvetica,arial;
+ border: solid 1px #211c1c;
+ @include box-shadow(0 1px 0 rgba(69, 69, 69, 1));
}
input:focus, textarea:focus {
outline: none;
border-color: $green;
- @include box-shadow(#6ce164 0 0 5px);
+ @include box-shadow(#6ce164 0 0 5px);
}
button {
margin-left: 135px;
@@ -667,7 +667,7 @@ form {
border-bottom: 1px solid darken($green, 27%);
border-left: 1px solid darken($green, 20%);
cursor: pointer;
- }
+ }
}
}
@@ -675,7 +675,7 @@ form {
float: right;
width: 400px;
font-size: 12px;
- color: #ff0;
+ color: #ff0;
}
#mail-slot {
@@ -697,9 +697,9 @@ form {
-moz-transform : rotate(-3deg);
transform : rotate(-3deg);
display: none;
-
+
h5 {
- font-size: 50px;
+ font-size: 50px;
margin-bottom: 0.5em;
text-transform: none;
}
@@ -715,17 +715,17 @@ form {
.vcard {
float: right;
width: 285px;
-
+
.email, .tel, .street-address {
display: block;
- }
+ }
.email, .tel {
margin-bottom: 1.4em;
}
}
// colophon
-// ----------------------------------------------------------------------
+// ----------------------------------------------------------------------
ul.logos {
margin-top: 2em;
list-style: none;
@@ -774,7 +774,7 @@ a#html5-badge {
// misc
-// ----------------------------------------------------------------------
+// ----------------------------------------------------------------------
#ie-typekit-fix {
position: absolute;
top: -9999px;
View
3  public/docs/css/screen.css
@@ -34,8 +34,7 @@ img#bg {
opacity: 0; }
#github-banner {
- background-color: rgba(0, 0, 0, 0.8);
- border-bottom: solid 1px #2dbc24;
+ background-color: rgba(0, 0, 0, 0.4);
color: #2dbc24;
text-align: center;
position: relative;
View
98 templates/index.html
@@ -1,54 +1,54 @@
<!DOCTYPE html>
<!--
- c :.
- 'o .0. .d:c.
- '. .; .;okO0000K0d:. .O; o:cccc:;'.
- ;. : .;;,';OKKKKKKKKKKKKKKo .Od.ckKKKKKKKKKKOo.
- : 'O0KKKKKKKK0KKKKKKKKKKKK0lOKkKKKKKKKKKKKKKKK0;
- ; lKKKKKKKKKc.0KKOxd:kKKKKKKKKKKKKKKKKKKKKKKKKK0.
-.; ,KKKKKKKKKOkdKKKc:. 'OKKKKl.lKKKKKKKKKKKKKKKKO'
-: oKKKKKKKk, x0KK0.; oKK0Oodc,;coxO0KKKK0xl'
- olcKK0x:. c:x,'., . c ..x;.
- ; .'. ;.x. '. ;. ,c ..
- .' ;.': , ;;
- ... .. . , :.
- .; . ',
- ,: . .,
- ,. ' ..
+ c :.
+ 'o .0. .d:c.
+ '. .; .;okO0000K0d:. .O; o:cccc:;'.
+ ;. : .;;,';OKKKKKKKKKKKKKKo .Od.ckKKKKKKKKKKOo.
+ : 'O0KKKKKKKK0KKKKKKKKKKKK0lOKkKKKKKKKKKKKKKKK0;
+ ; lKKKKKKKKKc.0KKOxd:kKKKKKKKKKKKKKKKKKKKKKKKKK0.
+.; ,KKKKKKKKKOkdKKKc:. 'OKKKKl.lKKKKKKKKKKKKKKKKO'
+: oKKKKKKKk, x0KK0.; oKK0Oodc,;coxO0KKKK0xl'
+ olcKK0x:. c:x,'., . c ..x;.
+ ; .'. ;.x. '. ;. ,c ..
+ .' ;.': , ;;
+ ... .. . , :.
+ .; . ',
+ ,: . .,
+ ,. ' ..
.. .. .
- .,
--->
+ .,
+-->
<html lang="en">
<head>
- <title>Black Ant Media &middot; Portfolio of Jason Long &middot; Web &amp; UI Design &middot; Columbus, Ohio</title>
+ <title>Black Ant Media &middot; Portfolio of Jason Long &middot; Web &amp; UI Design &middot; Columbus, Ohio</title>
<meta charset="utf-8" />
<meta name="description" content="Portfolio of web developer and designer Jason Long." />
<meta name="author" content="Jason Long" />
- <link rel="openid.server" href="http://www.myopenid.com/server" />
- <link rel="openid.delegate" href="https://blackant.myopenid.com" />
- <link rel="stylesheet" href="/min/index.php?g=css">
+ <link rel="openid.server" href="http://www.myopenid.com/server" />
+ <link rel="openid.delegate" href="https://blackant.myopenid.com" />
+ <link rel="stylesheet" href="/min/index.php?g=css">
<!--[if lt IE 9]>
<script src="http://html5shiv.googlecode.com/svn/trunk/html5.js"></script>
- <![endif]-->
+ <![endif]-->
</head>
-
+
<body>
- <!-- Asynchronous tracking code - placed at the top of the body tag per Google's recommendations -->
- <script type="text/javascript">
+ <!-- Asynchronous tracking code - placed at the top of the body tag per Google's recommendations -->
+ <script type="text/javascript">
var _gaq = _gaq || [];
_gaq.push(['_setAccount', 'UA-584195-1']);
_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';
(document.getElementsByTagName('head')[0] || document.getElementsByTagName('body')[0]).appendChild(ga);
})();
</script>
-
- <img src="/images/bg.jpg" id="bg" />
+
+ <img src="/images/bg.jpg" id="bg" />
<div id="wrapper">
- <div id="github-banner">As of March 26, 2012 I'm working full-time for GitHub and no longer doing freelance work.</div>
+ <div id="github-banner">As of March, 2012 I'm working full-time for GitHub and no longer doing freelance work.</div>
<div id="content">
<span id="ie-typekit-fix" class="tk-skippy-sharp"><!-- Forcing IE to load Skippy Sharp --></span>
<header>
@@ -62,23 +62,23 @@
<li><a href="http://thestrake.com" rel="external">Blog</a></li>
</ul>
</nav>
-
+
<h1>I’m Jason Long, an independent front-end developer <em>&amp;</em> UI designer in Columbus, Ohio.</h1>
<p>
<span>I pride myself on creating</span> <em>innovative application designs</em> <span>and solving</span> <em>challenging interface problems</em>.<br />
<span>I love to</span> <em>collaborate</em> <span>with other</span> <em>passionate developers and designers</em> <span>on exciting projects.</span>
</p>
</header>
-
+
<section id="work">
- <h2>Work</h2>
+ <h2>Work</h2>
<div id="portfolio-wrapper"></div>
</section>
<section id="play">
<h2>Play</h2>
-
+
<p>
These are a few of the experiments and concepts that I’ve posted to <a href="http://thestrake.com">my blog</a> and <a href="http://dribbble.com/jasonlong">Dribbble</a>. I have a site called <a href="http://houseofbuttons.tumblr.com">House of Buttons</a> that you might like if you share my fetish for beautiful user interface buttons. Oh, and you can <a href="http://twitter.com/jasonlong">follow me on Twitter</a> if you're into that sort of thing.
</p>
@@ -130,19 +130,19 @@
<section id="about">
<h2>About</h2>
-
+
<p><img src="/images/_.gif" data-defer-src="/images/jason.jpg" width="180" height="187" alt="Jason" />I made my first website back in 1994 as Computer Science engineering student at The Ohio State University and I've been hooked ever since. WIth my technical background and passion for visual design, front-end web development and UI design is the perfect outlet for my skills and interests.</p>
<p>I love to collaborate with other talented people on exciting projects. Sometimes I supply hardcore development shops with some creative juice. Other times I work with pure design agencies and bring a much-needed propeller hat. For the right-sized project, I can be the one-man band that brings your idea to life.</p>
<p>I live in Columbus, Ohio where I've been married for over a dozen years and a dad for nearly ten. When I'm not pushing pixels or slinging code, I enjoy running and reading (preferably not at the same time).</p>
-
+
</section>
<section id="contact">
<h2>Contact</h2>
-
+
<div id="contact-wrapper">
<div class="inner">
<div class="card">
@@ -174,7 +174,7 @@
</div>
</div>
-
+
<div id="thanks">
<h5>Thanks for your message!</h5>
<p>I'll be in touch shortly.</p>
@@ -183,25 +183,25 @@
<div id="error">
<h5>Uh oh!</h5>
- <p>For some reason there was a problem sending your message.<p>
+ <p>For some reason there was a problem sending your message.<p>
<p>Please try using the email address to the right.</p>
</div>
-
+
</div>
<div id="mail-slot"></div>
-
+
<!-- hcard microformat: http://microformats.org/wiki/hcard -->
<div class="vcard">
<h3>Electronic Mail</h3>
<a href="mailto:hello@blackantmedia.com" class="email">hello@blackantmedia.com</a>
- <h3>Snail Mail</h3>
+ <h3>Snail Mail</h3>
<div class="adr">
<span class="street-address">P.O. Box 424</span>
- <span class="locality">Hilliard</span>, <span class="region">Ohio</span>
+ <span class="locality">Hilliard</span>, <span class="region">Ohio</span>
<span class="postal-code">43026</span>
</div>
</div>
-
+
</section>
<section id="colophon">
@@ -228,15 +228,15 @@
<img src="/images/_.gif" data-defer-src="/images/html5-badge.png" width="79" height="26" alt="HTML5 Powered with CSS3 / Styling, Graphics, 3D &amp; Effects, and Semantics" title="HTML5 Powered with CSS3 / Styling, Graphics, 3D &amp; Effects, and Semantics">
</a>
</p>
-
- </section>
+
+ </section>
</div>
-
+
</div>
-
+
<script src="http://use.typekit.com/seh1ghz.js"></script>
- <script src="https://ajax.googleapis.com/ajax/libs/mootools/1.3.0/mootools-yui-compressed.js"></script>
- <script src="/min/index.php?g=js"></script>
+ <script src="https://ajax.googleapis.com/ajax/libs/mootools/1.3.0/mootools-yui-compressed.js"></script>
+ <script src="/min/index.php?g=js"></script>
<script type="text/javascript">
var _gauges = _gauges || [];
(function() {
Please sign in to comment.
Something went wrong with that request. Please try again.