Browse Source

activation du theme pelican-elegant

master
Victor 7 years ago
parent
commit
e6283b0447
65 changed files with 1500 additions and 1069 deletions
  1. +7
    -0
      theme/LICENSE.md
  2. +19
    -0
      theme/README.md
  3. +38
    -0
      theme/RELEASE_NOTES.md
  4. +54
    -0
      theme/THANKS.md
  5. BIN
      theme/article-screenshot.png
  6. BIN
      theme/home-page-screenshot.png
  7. BIN
      theme/search-result-screenshot.png
  8. +0
    -453
      theme/static/css/main.css
  9. +0
    -205
      theme/static/css/pygment.css
  10. +0
    -52
      theme/static/css/reset.css
  11. +69
    -0
      theme/static/css/solarizedlight.css
  12. +397
    -0
      theme/static/css/style.css
  13. +0
    -3
      theme/static/css/typogrify.css
  14. +0
    -48
      theme/static/css/wide.css
  15. BIN
      theme/static/images/icons/aboutme.png
  16. BIN
      theme/static/images/icons/bitbucket.png
  17. BIN
      theme/static/images/icons/delicious.png
  18. BIN
      theme/static/images/icons/facebook.png
  19. BIN
      theme/static/images/icons/github.png
  20. BIN
      theme/static/images/icons/gitorious.png
  21. BIN
      theme/static/images/icons/gittip.png
  22. BIN
      theme/static/images/icons/google-groups.png
  23. BIN
      theme/static/images/icons/google-plus.png
  24. BIN
      theme/static/images/icons/hackernews.png
  25. BIN
      theme/static/images/icons/lastfm.png
  26. BIN
      theme/static/images/icons/linkedin.png
  27. BIN
      theme/static/images/icons/reddit.png
  28. BIN
      theme/static/images/icons/rss.png
  29. BIN
      theme/static/images/icons/slideshare.png
  30. BIN
      theme/static/images/icons/speakerdeck.png
  31. BIN
      theme/static/images/icons/stackoverflow.png
  32. BIN
      theme/static/images/icons/twitter.png
  33. BIN
      theme/static/images/icons/vimeo.png
  34. BIN
      theme/static/images/icons/youtube.png
  35. BIN
      theme/static/tipuesearch/img/expand.png
  36. BIN
      theme/static/tipuesearch/img/link.png
  37. BIN
      theme/static/tipuesearch/img/loader.gif
  38. +136
    -0
      theme/static/tipuesearch/tipuesearch.css
  39. +12
    -0
      theme/static/tipuesearch/tipuesearch.min.js
  40. +52
    -0
      theme/static/tipuesearch/tipuesearch_set.js
  41. +30
    -0
      theme/templates/404.html
  42. +2
    -36
      theme/templates/analytics.html
  43. +28
    -12
      theme/templates/archives.html
  44. +148
    -32
      theme/templates/article.html
  45. +0
    -23
      theme/templates/article_infos.html
  46. +0
    -2
      theme/templates/author.html
  47. +0
    -16
      theme/templates/authors.html
  48. +83
    -75
      theme/templates/base.html
  49. +57
    -0
      theme/templates/categories.html
  50. +0
    -2
      theme/templates/category.html
  51. +27
    -1
      theme/templates/comments.html
  52. +18
    -0
      theme/templates/disqus_script_comment.html
  53. +4
    -3
      theme/templates/disqus_script_count.html
  54. +36
    -0
      theme/templates/feeds.html
  55. +13
    -0
      theme/templates/footer.html
  56. +0
    -9
      theme/templates/github.html
  57. +58
    -52
      theme/templates/index.html
  58. +81
    -8
      theme/templates/page.html
  59. +0
    -13
      theme/templates/period_archives.html
  60. +48
    -0
      theme/templates/search.html
  61. +0
    -2
      theme/templates/tag.html
  62. +0
    -1
      theme/templates/taglist.html
  63. +83
    -10
      theme/templates/tags.html
  64. +0
    -8
      theme/templates/translations.html
  65. +0
    -3
      theme/templates/twitter.html

+ 7
- 0
theme/LICENSE.md View File

@ -0,0 +1,7 @@
The license requires that you give credit to me, Talha Mansoor, as the author of the Elegant theme on every site that uses this theme. I have placed the attribution in the footer of every page. Do not remove it. If you need to remove or change the style of the attribution, please get in [touch with me](http://oncrashreboot.com/#about-me) first.
Along with this attribution clause, Elegant theme is licensed under The MIT License.
If you use my theme, I would love to hear from you. [Get in touch](http://oncrashreboot.com/#about-me) and let me know about it. I may link to your site too.
Please visit License section of [Elegant - a theme for Pelican](http://oncrashreboot.com/pelican-elegant) at my blog for updated licensing details.

+ 19
- 0
theme/README.md View File

@ -0,0 +1,19 @@
Please visit [Elegant - a theme for Pelican](http://oncrashreboot.com/pelican-elegant) at my blog for detailed features and documentation.
Elegant offers several unique features including search, live filter, collapsible comments, Mailchimp, custom 404 page, etc. It is a minimal, and stylish theme that looks amazing across all screen resolutions and devices.
Here is an example search result
![Search result screenshot](https://raw.github.com/talha131/pelican-elegant/master/search-result-screenshot.png)
Here is how the home page looks like
![Home page screenshot](https://raw.github.com/talha131/pelican-elegant/master/home-page-screenshot.png)
This is how a generated article looks like
![Article screenshot](https://raw.github.com/talha131/pelican-elegant/master/article-screenshot.png)
[![githalytics.com alpha](https://cruel-carlota.pagodabox.com/c71132a529c1c5d7eb8dc5ea4825a851 "githalytics.com")](http://githalytics.com/talha131/pelican-elegant)
[![Bitdeli Badge](https://d2weczhvl823v0.cloudfront.net/talha131/pelican-elegant/trend.png)](https://bitdeli.com/free "Bitdeli Badge")

+ 38
- 0
theme/RELEASE_NOTES.md View File

@ -0,0 +1,38 @@
Version 1.3
===========
* Next and previous article navigation is placed below comments section so that article's content and comments appear together
* Article title and site name in `<title>` tag is separated by ` · ` which is cleaner and more subtle than ` - `
* Subtitle of articles and pages is added in `<title>` tag along with main title
* Description meta tag on Home Page uses `SITE_DESCRIPTION`
* Bug fix: Expand comments section if URL points to a comment
* Bug fix: CSS style of links in an unordered list inside article content is different from article links
Version 1.2
===========
* RSS and Atom feed links
* CSS style for permanent links added. It is visible only user hovers over the heading
* Block quote is indented towards left
* Bug fix: Hyperlink dashed underline is not visible on Chrome
* Bug fix: Text in list goes beyond list marker when text is long and overflows to next line
* Bug fix: Disqus comment count is always 0
Version 1.1
===========
* Add template for pages. Pages do not have tags, category and Disqus comments
* Keep style of a hyperlink in `modified` meta data consisted with the theme
* Add `keywords` meta tag that uses keywords, tags and category attribute of articles and pages
* Validate search form for empty strings
* If `RECENT_ARTICLES_COUNT` is undefined, set it to 10. So that Pelican does not throw critical error
* Bug fix: Path of search.html in search form action should always be absolute
* Bug fix: Copyright meta tag should be set to the author, instead of the license
* Bug fix: Close meta tags
* Bug fix: ID of search form in 404 page should be different from the ID of search form in main navigation
* Bug fix: Links in ordered list in an article do not conform to the link style in rest of the article
Version 1.0
===========
* Initial release

+ 54
- 0
theme/THANKS.md View File

@ -0,0 +1,54 @@
Thanks to
=========
[tshepang](https://github.com/tshepang)
---------------------------------------
### Oct 4, 2013
1. He [reported](https://github.com/talha131/pelican-elegant/issues/10) an issue with CSS style of links in an unordered lists.
### Oct 1, 2013
1. He [reported](https://github.com/talha131/pelican-elegant/issues/6) that it is not possible to link to a Disqus comment.
### Sep 29, 2013
1. He [reported](https://github.com/talha131/pelican-elegant/issues/5) hyperlink style compatibility issue on Chrome.
1. He [reported](https://github.com/talha131/pelican-elegant/issues/3) an issue with link style.
1. He [reported](https://github.com/talha131/pelican-elegant/issues/4) the bug that Disqus comment count is always zero.
[yuex](https://github.com/yuex)
-------------------------------
### Sep 15, 2013
1. He submitted a [patch](https://github.com/talha131/pelican-elegant/pull/2) to the project.
[Melissa](https://github.com/meli-lewis)
----------------------------------------
### Sep 3, 2013
1. She reported a [critical bug](https://github.com/talha131/pelican-elegant/issues/1).
[John](http://twitter.com/BostonEnginerd)
-----------------------------------------
### Sep 2, 2013
1. He suggested [an improvement](https://twitter.com/BostonEnginerd/status/374555593589002241) to the [Elegant project description](http://oncrashreboot.com/elegant-a-clean-theme-for-pelican-with-search-feature).
[if1live](https://github.com/if1live)
-------------------------------------
### Aug 31, 2013
1. His [pull request](https://github.com/getpelican/pelican-plugins/pull/68) reminded me that I have forgotten to add template for Pages
1. His [commit](https://github.com/if1live/pelican-elegant/commit/3da52903e94051fa771212149a10a271adc78264#commitcomment-3988674) in the fork brought bug in the path of search.html to my notice
[Jérémie Astori](https://github.com/astorije)
---------------------------------------------
### Aug 30, 2013
1. He reported a [bug](https://botbot.me/freenode/pelican/msg/5577967/) in search form.

BIN
theme/article-screenshot.png View File

Before After
Width: 1379  |  Height: 1382  |  Size: 247 KiB

BIN
theme/home-page-screenshot.png View File

Before After
Width: 1379  |  Height: 844  |  Size: 199 KiB

BIN
theme/search-result-screenshot.png View File

Before After
Width: 1379  |  Height: 844  |  Size: 72 KiB

+ 0
- 453
theme/static/css/main.css View File

@ -1,453 +0,0 @@
/*
Name: Smashing HTML5
Date: July 2009
Description: Sample layout for HTML5 and CSS3 goodness.
Version: 1.0
License: MIT <http://opensource.org/licenses/MIT>
Licensed by: Smashing Media GmbH <http://www.smashingmagazine.com/>
Original author: Enrique Ramírez <http://enrique-ramirez.com/>
*/
/* Imports */
@import url("reset.css");
@import url("pygment.css");
@import url("typogrify.css");
@import url(https://fonts.googleapis.com/css?family=Yanone+Kaffeesatz&subset=latin);
/***** Global *****/
/* Body */
body {
background: #F5F4EF;
color: #000305;
font-size: 87.5%; /* Base font size: 14px */
font-family: 'Trebuchet MS', Trebuchet, 'Lucida Sans Unicode', 'Lucida Grande', 'Lucida Sans', Arial, sans-serif;
line-height: 1.429;
margin: 0;
padding: 0;
text-align: left;
}
/* Headings */
h1 {font-size: 2em }
h2 {font-size: 1.571em} /* 22px */
h3 {font-size: 1.429em} /* 20px */
h4 {font-size: 1.286em} /* 18px */
h5 {font-size: 1.143em} /* 16px */
h6 {font-size: 1em} /* 14px */
h1, h2, h3, h4, h5, h6 {
font-weight: 400;
line-height: 1.1;
margin-bottom: .8em;
font-family: 'Yanone Kaffeesatz', arial, serif;
}
h3, h4, h5, h6 { margin-top: .8em; }
hr { border: 2px solid #EEEEEE; }
/* Anchors */
a {outline: 0;}
a img {border: 0px; text-decoration: none;}
a:link, a:visited {
color: #C74350;
padding: 0 1px;
text-decoration: underline;
}
a:hover, a:active {
background-color: #C74350;
color: #fff;
text-decoration: none;
text-shadow: 1px 1px 1px #333;
}
h1 a:hover {
background-color: inherit
}
/* Paragraphs */
div.line-block,
p { margin-top: 1em;
margin-bottom: 1em;}
strong, b {font-weight: bold;}
em, i {font-style: italic;}
/* Lists */
ul {
list-style: outside disc;
margin: 0em 0 0 1.5em;
}
ol {
list-style: outside decimal;
margin: 0em 0 0 1.5em;
}
li { margin-top: 0.5em;
margin-bottom: 1em; }
.post-info {
float:right;
margin:10px;
padding:5px;
}
.post-info p{
margin-top: 1px;
margin-bottom: 1px;
}
.readmore { float: right }
dl {margin: 0 0 1.5em 0;}
dt {font-weight: bold;}
dd {margin-left: 1.5em;}
pre{background-color: rgb(238, 238, 238); padding: 10px; margin: 10px; overflow: auto;}
/* Quotes */
blockquote {
margin: 20px;
font-style: italic;
}
cite {}
q {}
div.note {
float: right;
margin: 5px;
font-size: 85%;
max-width: 300px;
}
/* Tables */
table {margin: .5em auto 1.5em auto; width: 98%;}
/* Thead */
thead th {padding: .5em .4em; text-align: left;}
thead td {}
/* Tbody */
tbody td {padding: .5em .4em;}
tbody th {}
tbody .alt td {}
tbody .alt th {}
/* Tfoot */
tfoot th {}
tfoot td {}
/* HTML5 tags */
header, section, footer,
aside, nav, article, figure {
display: block;
}
/***** Layout *****/
.body {clear: both; margin: 0 auto; width: 80%;}
img.right, figure.right {float: right; margin: 0 0 2em 2em;}
img.left, figure.left {float: left; margin: 0 2em 2em 0;}
/*
Header
*****************/
#banner {
margin: 0 auto;
padding: 2.5em 0 0 0;
width: 80%;
}
/* Banner */
#banner h1 {font-size: 3.571em; line-height: 0;}
#banner h1 a:link, #banner h1 a:visited {
color: #000305;
display: block;
font-weight: bold;
margin: 0 0 .6em .2em;
text-decoration: none;
}
#banner h1 a:hover, #banner h1 a:active {
background: none;
color: #C74350;
text-shadow: none;
}
#banner h1 strong {font-size: 0.36em; font-weight: normal;}
/* Main Nav */
#banner nav {
background: #000305;
font-size: 1.143em;
height: 40px;
line-height: 30px;
margin: 0 auto 2em auto;
padding: 0;
text-align: center;
width: 100%;
border-radius: 5px;
-moz-border-radius: 5px;
-webkit-border-radius: 5px;
}
#banner nav ul {list-style: none; margin: 0 auto; width: 100%;}
#banner nav li {float: left; display: inline; margin: 0;}
#banner nav a:link, #banner nav a:visited {
color: #fff;
display: inline-block;
height: 30px;
padding: 5px 1.5em;
text-decoration: none;
}
#banner nav a:hover, #banner nav a:active,
#banner nav .active a:link, #banner nav .active a:visited {
background: #C74451;
color: #fff;
text-shadow: none !important;
}
#banner nav li:first-child a {
border-top-left-radius: 5px;
-moz-border-radius-topleft: 5px;
-webkit-border-top-left-radius: 5px;
border-bottom-left-radius: 5px;
-moz-border-radius-bottomleft: 5px;
-webkit-border-bottom-left-radius: 5px;
}
/*
Featured
*****************/
#featured {
background: #fff;
margin-bottom: 2em;
overflow: hidden;
padding: 20px;
width: 80%;
border-radius: 10px;
-moz-border-radius: 10px;
-webkit-border-radius: 10px;
}
#featured figure {
border: 2px solid #eee;
float: right;
margin: 0.786em 2em 0 5em;
width: 248px;
}
#featured figure img {display: block; float: right;}
#featured h2 {color: #C74451; font-size: 1.714em; margin-bottom: 0.333em;}
#featured h3 {font-size: 1.429em; margin-bottom: .5em;}
#featured h3 a:link, #featured h3 a:visited {color: #000305; text-decoration: none;}
#featured h3 a:hover, #featured h3 a:active {color: #fff;}
/*
Body
*****************/
#content {
background: #fff;
margin-bottom: 2em;
overflow: hidden;
padding: 20px 20px;
width: 80%;
border-radius: 10px;
-moz-border-radius: 10px;
-webkit-border-radius: 10px;
}
/*
Extras
*****************/
#extras {margin: 0 auto 3em auto; overflow: hidden;}
#extras ul {list-style: none; margin: 0;}
#extras li {border-bottom: 1px solid #fff;}
#extras h2 {
color: #C74350;
font-size: 1.429em;
margin-bottom: .25em;
padding: 0 3px;
}
#extras a:link, #extras a:visited {
color: #444;
display: block;
border-bottom: 1px solid #F4E3E3;
text-decoration: none;
padding: .3em .25em;
}
#extras a:hover, #extras a:active {color: #fff;}
/* Blogroll */
#extras .blogroll {
float: left;
width: 615px;
}
#extras .blogroll li {float: left; margin: 0 20px 0 0; width: 185px;}
/* Social */
#extras .social {
float: right;
width: 175px;
}
#extras div[class='social'] a {
background-repeat: no-repeat;
background-position: 3px 6px;
padding-left: 25px;
}
/* Icons */
.social a[href*='about.me'] {background-image: url('../images/icons/aboutme.png');}
.social a[href*='bitbucket.org'] {background-image: url('../images/icons/bitbucket.png');}
.social a[href*='delicious.com'] {background-image: url('../images/icons/delicious.png');}
.social a[href*='digg.com'] {background-image: url('../images/icons/digg.png');}
.social a[href*='facebook.com'] {background-image: url('../images/icons/facebook.png');}
.social a[href*='gitorious.org'] {background-image: url('../images/icons/gitorious.png');}
.social a[href*='github.com'],
.social a[href*='git.io'] {
background-image: url('../images/icons/github.png');
background-size: 16px 16px;
}
.social a[href*='gittip.com'] {background-image: url('../images/icons/gittip.png');}
.social a[href*='plus.google.com'] {background-image: url('../images/icons/google-plus.png');}
.social a[href*='groups.google.com'] {background-image: url('../images/icons/google-groups.png');}
.social a[href*='news.ycombinator.com'],
.social a[href*='hackernewsers.com'] {background-image: url('../images/icons/hackernews.png');}
.social a[href*='last.fm'], .social a[href*='lastfm.'] {background-image: url('../images/icons/lastfm.png');}
.social a[href*='linkedin.com'] {background-image: url('../images/icons/linkedin.png');}
.social a[href*='reddit.com'] {background-image: url('../images/icons/reddit.png');}
.social a[type$='atom+xml'], .social a[type$='rss+xml'] {background-image: url('../images/icons/rss.png');}
.social a[href*='slideshare.net'] {background-image: url('../images/icons/slideshare.png');}
.social a[href*='speakerdeck.com'] {background-image: url('../images/icons/speakerdeck.png');}
.social a[href*='stackoverflow.com'] {background-image: url('../images/icons/stackoverflow.png');}
.social a[href*='twitter.com'] {background-image: url('../images/icons/twitter.png');}
.social a[href*='vimeo.com'] {background-image: url('../images/icons/vimeo.png');}
.social a[href*='youtube.com'] {background-image: url('../images/icons/youtube.png');}
/*
About
*****************/
#about {
background: #fff;
font-style: normal;
margin-bottom: 2em;
overflow: hidden;
padding: 20px;
text-align: left;
width: 80%;
border-radius: 10px;
-moz-border-radius: 10px;
-webkit-border-radius: 10px;
}
#about .primary {float: left; width: 165px;}
#about .primary strong {color: #C64350; display: block; font-size: 1.286em;}
#about .photo {float: left; margin: 5px 20px;}
#about .url:link, #about .url:visited {text-decoration: none;}
#about .bio {float: right; width: 500px;}
/*
Footer
*****************/
#contentinfo {padding-bottom: 2em; text-align: right;}
/***** Sections *****/
/* Blog */
.hentry {
display: block;
clear: both;
border-bottom: 1px solid #eee;
padding: 1.5em 0;
}
li:last-child .hentry, #content > .hentry {border: 0; margin: 0;}
#content > .hentry {padding: 1em 0;}
.hentry img{display : none ;}
.entry-title {font-size: 3em; margin-bottom: 10px; margin-top: 0;}
.entry-title a:link, .entry-title a:visited {text-decoration: none; color: #333;}
.entry-title a:visited {background-color: #fff;}
.hentry .post-info * {font-style: normal;}
/* Content */
.hentry footer {margin-bottom: 2em;}
.hentry footer address {display: inline;}
#posts-list footer address {display: block;}
/* Blog Index */
#posts-list {list-style: none; margin: 0;}
#posts-list .hentry {padding-left: 10px; position: relative;}
#posts-list footer {
left: 10px;
position: relative;
float: left;
top: 0.5em;
width: 190px;
}
/* About the Author */
#about-author {
background: #f9f9f9;
clear: both;
font-style: normal;
margin: 2em 0;
padding: 10px 20px 15px 20px;
border-radius: 5px;
-moz-border-radius: 5px;
-webkit-border-radius: 5px;
}
#about-author strong {
color: #C64350;
clear: both;
display: block;
font-size: 1.429em;
}
#about-author .photo {border: 1px solid #ddd; float: left; margin: 5px 1em 0 0;}
/* Comments */
#comments-list {list-style: none; margin: 0 1em;}
#comments-list blockquote {
background: #f8f8f8;
clear: both;
font-style: normal;
margin: 0;
padding: 15px 20px;
border-radius: 5px;
-moz-border-radius: 5px;
-webkit-border-radius: 5px;
}
#comments-list footer {color: #888; padding: .5em 1em 0 0; text-align: right;}
#comments-list li:nth-child(2n) blockquote {background: #F5f5f5;}
/* Add a Comment */
#add-comment label {clear: left; float: left; text-align: left; width: 150px;}
#add-comment input[type='text'],
#add-comment input[type='email'],
#add-comment input[type='url'] {float: left; width: 200px;}
#add-comment textarea {float: left; height: 150px; width: 495px;}
#add-comment p.req {clear: both; margin: 0 .5em 1em 0; text-align: right;}
#add-comment input[type='submit'] {float: right; margin: 0 .5em;}
#add-comment * {margin-bottom: .5em;}

+ 0
- 205
theme/static/css/pygment.css View File

@ -1,205 +0,0 @@
.hll {
background-color:#eee;
}
.c {
color:#408090;
font-style:italic;
}
.err {
border:1px solid #FF0000;
}
.k {
color:#007020;
font-weight:bold;
}
.o {
color:#666666;
}
.cm {
color:#408090;
font-style:italic;
}
.cp {
color:#007020;
}
.c1 {
color:#408090;
font-style:italic;
}
.cs {
background-color:#FFF0F0;
color:#408090;
}
.gd {
color:#A00000;
}
.ge {
font-style:italic;
}
.gr {
color:#FF0000;
}
.gh {
color:#000080;
font-weight:bold;
}
.gi {
color:#00A000;
}
.go {
color:#303030;
}
.gp {
color:#C65D09;
font-weight:bold;
}
.gs {
font-weight:bold;
}
.gu {
color:#800080;
font-weight:bold;
}
.gt {
color:#0040D0;
}
.kc {
color:#007020;
font-weight:bold;
}
.kd {
color:#007020;
font-weight:bold;
}
.kn {
color:#007020;
font-weight:bold;
}
.kp {
color:#007020;
}
.kr {
color:#007020;
font-weight:bold;
}
.kt {
color:#902000;
}
.m {
color:#208050;
}
.s {
color:#4070A0;
}
.na {
color:#4070A0;
}
.nb {
color:#007020;
}
.nc {
color:#0E84B5;
font-weight:bold;
}
.no {
color:#60ADD5;
}
.nd {
color:#555555;
font-weight:bold;
}
.ni {
color:#D55537;
font-weight:bold;
}
.ne {
color:#007020;
}
.nf {
color:#06287E;
}
.nl {
color:#002070;
font-weight:bold;
}
.nn {
color:#0E84B5;
font-weight:bold;
}
.nt {
color:#062873;
font-weight:bold;
}
.nv {
color:#BB60D5;
}
.ow {
color:#007020;
font-weight:bold;
}
.w {
color:#BBBBBB;
}
.mf {
color:#208050;
}
.mh {
color:#208050;
}
.mi {
color:#208050;
}
.mo {
color:#208050;
}
.sb {
color:#4070A0;
}
.sc {
color:#4070A0;
}
.sd {
color:#4070A0;
font-style:italic;
}
.s2 {
color:#4070A0;
}
.se {
color:#4070A0;
font-weight:bold;
}
.sh {
color:#4070A0;
}
.si {
color:#70A0D0;
font-style:italic;
}
.sx {
color:#C65D09;
}
.sr {
color:#235388;
}
.s1 {
color:#4070A0;
}
.ss {
color:#517918;
}
.bp {
color:#007020;
}
.vc {
color:#BB60D5;
}
.vg {
color:#BB60D5;
}
.vi {
color:#BB60D5;
}
.il {
color:#208050;
}

+ 0
- 52
theme/static/css/reset.css View File

@ -1,52 +0,0 @@
/*
Name: Reset Stylesheet
Description: Resets browser's default CSS
Author: Eric Meyer
Author URI: http://meyerweb.com/eric/tools/css/reset/
*/
/* v1.0 | 20080212 */
html, body, div, span, applet, object, iframe,
h1, h2, h3, h4, h5, h6, p, blockquote, pre,
a, abbr, acronym, address, big, cite, code,
del, dfn, em, font, img, ins, kbd, q, s, samp,
small, strike, strong, sub, sup, tt, var,
b, u, i, center,
dl, dt, dd, ol, ul, li,
fieldset, form, label, legend,
table, caption, tbody, tfoot, thead, tr, th, td {
background: transparent;
border: 0;
font-size: 100%;
margin: 0;
outline: 0;
padding: 0;
vertical-align: baseline;
}
body {line-height: 1;}
ol, ul {list-style: none;}
blockquote, q {quotes: none;}
blockquote:before, blockquote:after,
q:before, q:after {
content: '';
content: none;
}
/* remember to define focus styles! */
:focus {
outline: 0;
}
/* remember to highlight inserts somehow! */
ins {text-decoration: none;}
del {text-decoration: line-through;}
/* tables still need 'cellspacing="0"' in the markup */
table {
border-collapse: collapse;
border-spacing: 0;
}

+ 69
- 0
theme/static/css/solarizedlight.css View File

@ -0,0 +1,69 @@
.hll { background-color: #ffffcc }
.c { color: #93a1a1; font-style: italic } /* Comment */
.err { color: #dc322f } /* Error */
.g { color: #657b83 } /* Generic */
.k { color: #859900 } /* Keyword */
.l { color: #657b83 } /* Literal */
.n { color: #586e75 } /* Name */
.o { color: #657b83 } /* Operator */
.x { color: #657b83 } /* Other */
.p { color: #657b83 } /* Punctuation */
.cm { color: #93a1a1; font-style: italic } /* Comment.Multiline */
.cp { color: #93a1a1; font-style: italic } /* Comment.Preproc */
.c1 { color: #93a1a1; font-style: italic } /* Comment.Single */
.cs { color: #93a1a1; font-style: italic } /* Comment.Special */
.gd { color: #657b83 } /* Generic.Deleted */
.ge { color: #657b83 } /* Generic.Emph */
.gr { color: #657b83 } /* Generic.Error */
.gh { color: #657b83 } /* Generic.Heading */
.gi { color: #657b83 } /* Generic.Inserted */
.go { color: #657b83 } /* Generic.Output */
.gp { color: #657b83 } /* Generic.Prompt */
.gs { color: #657b83 } /* Generic.Strong */
.gu { color: #657b83 } /* Generic.Subheading */
.gt { color: #657b83 } /* Generic.Traceback */
.kc { color: #859900 } /* Keyword.Constant */
.kd { color: #859900 } /* Keyword.Declaration */
.kn { color: #cb4b16 } /* Keyword.Namespace */
.kp { color: #cb4b16 } /* Keyword.Pseudo */
.kr { color: #859900 } /* Keyword.Reserved */
.kt { color: #859900 } /* Keyword.Type */
.ld { color: #657b83 } /* Literal.Date */
.m { color: #2aa198 } /* Literal.Number */
.s { color: #2aa198 } /* Literal.String */
.na { color: #657b83 } /* Name.Attribute */
.nb { color: #268bd2 } /* Name.Builtin */
.nc { color: #268bd2 } /* Name.Class */
.no { color: #b58900 } /* Name.Constant */
.nd { color: #cb4b16 } /* Name.Decorator */
.ni { color: #cb4b16 } /* Name.Entity */
.ne { color: #cb4b16 } /* Name.Exception */
.nf { color: #268bd2 } /* Name.Function */
.nl { color: #657b83 } /* Name.Label */
.nn { color: #b58900 } /* Name.Namespace */
.nx { color: #657b83 } /* Name.Other */
.py { color: #268bd2 } /* Name.Property */
.nt { color: #859900 } /* Name.Tag */
.nv { color: #cd4b16 } /* Name.Variable */
.ow { color: #859900 } /* Operator.Word */
.w { color: #fdf6e3 } /* Text.Whitespace */
.mf { color: #2aa198 } /* Literal.Number.Float */
.mh { color: #2aa198 } /* Literal.Number.Hex */
.mi { color: #2aa198 } /* Literal.Number.Integer */
.mo { color: #2aa198 } /* Literal.Number.Oct */
.sb { color: #2aa198 } /* Literal.String.Backtick */
.sc { color: #2aa198 } /* Literal.String.Char */
.sd { color: #2aa198 } /* Literal.String.Doc */
.s2 { color: #2aa198 } /* Literal.String.Double */
.se { color: #cb4b16 } /* Literal.String.Escape */
.sh { color: #2aa198 } /* Literal.String.Heredoc */
.si { color: #cb4b16 } /* Literal.String.Interpol */
.sx { color: #2aa198 } /* Literal.String.Other */
.sr { color: #2aa198 } /* Literal.String.Regex */
.s1 { color: #2aa198 } /* Literal.String.Single */
.ss { color: #2aa198 } /* Literal.String.Symbol */
.bp { color: #268bd2; font-weight: bold } /* Name.Builtin.Pseudo */
.vc { color: #268bd2 } /* Name.Variable.Class */
.vg { color: #268bd2 } /* Name.Variable.Global */
.vi { color: #268bd2 } /* Name.Variable.Instance */
.il { color: #2aa198 } /* Literal.Number.Integer.Long */

+ 397
- 0
theme/static/css/style.css View File

@ -0,0 +1,397 @@
body,html{
height:100%;
}
h1, h2, h3, h4, h5, h5 {
font-family: Baskerville, Garamond, Georgia, "DejaVu Serif", "Times New Roman", Times, serif;
font-weight: normal;
}
#content-sans-footer{
min-height:100%;
}
/* site title */
.site-name {
font-family: "Monaco","Inconsolata","Andale Mono","Lucida Console","Bitstream Vera Sans Mono","Courier New",Courier,monospace;
}
/* footer */
div#footer {
margin:15px 0px;
border-top:1px solid rgba(0,0,0,0.2);
padding:2px 5px 0px 5px;
font-size:0.7em;
font-family:calibri,tahoma,arial,sans-serif;
}
ul.footer-content{
list-style:none;
padding:0px;
margin:0px;
}
ul.footer-content li {
padding-left:5px;
}
ul.footer-content li.elegant-power {
float:right;
}
ul.footer-content li.elegant-license {
float:left;
}
ul.footer-content li.elegant-subtitle{
float:left;
}
/* comment */
#comment-message {
font-family: "PT Serif", Georgia, Times, "Times New Roman", serif;
font-size: 1em;
color:gray;
}
a.disqus-comment-count {
font-family:'Trebuchet MS',Trebuchet,'Lucida Sans Unicode','Lucida Grande','Lucida Sans',Arial,sans-serif;
font-size: 0.9em;
}
div#disqus_thread {
padding-left:10px;
padding-right:10px;
}
/* Syntax Highlight */
.highlight pre {
background-color:rgb(253,246,227);
border-radius:3px 3px 3px 3px;
}
td.code .highlight pre {
border-radius:0px 3px 3px 0px;
}
td.code {
width:100%;
}
.linenodiv pre {
border-radius:3px 0px 0px 3px;
color:rgb(101,123,131);
background-color:rgb(238,232,213);
}
/* Tags */
.list-of-tags {
list-style:none;
margin:0;
padding:5px 0 ;
overflow:hidden;
font-family: "Helvetica Neue", Helvetica, Arial, sans-serif;
}
.list-of-tags li {
line-height:28px;
float:left;
margin:0px;
}
.list-of-tags a {
padding: 3px 6px;
margin: 2px;
color: #222;
background:#EEE;
border-radius: 3px;
text-decoration:none;
}
.list-of-tags a span {
vertical-align: super;
font-size: 0.8em;
}
.tags-in-article li {
line-height:28px;
float:none;
}
h2.tag-title {
font-family:'Trebuchet MS',Trebuchet,'Lucida Sans Unicode','Lucida Grande','Lucida Sans',Arial,sans-serif;
}
ul.articles-in-tag li {
font-family:'Trebuchet MS',Trebuchet,'Lucida Sans Unicode','Lucida Grande','Lucida Sans',Arial,sans-serif;
font-size:1.1em;
}
/* Article */
article p a, article ol a, article div.article-content ul:not(.articles_timeline) a {
color:black;
border-bottom:thin dashed darkgray;
}
article p a:hover, article ol a:hover, article div.article-content ul:not(.articles_timeline) a:hover {
text-shadow:none;
text-decoration:none;
border-bottom:none;
}
.article-content {
text-align:justify;
max-width:50em;
font-family: "PT Serif", Georgia, Times, "Times New Roman", serif;
}
.article-content p{
font-variant: normal;
text-transform: none;
font-size: 1.1em;
line-height: 1.6em;
margin:20px 0px 20px 0px;
}
.article-content blockquote {
padding: 0px 0px 0px 20px;
margin: 20px 0px 20px 0px;
border-left: 5px solid rgb(100,100,100);
margin-left: 2em;
}
.article-content blockquote p {
font-family: "Helvetica Neue", Helvetica, Arial, sans-serif;
font-variant: normal;
text-transform: none;
font-size: 1.2em;
line-height: 1.7em;
}
.article-content ul {
list-style-type: circle;
font-size:1em;
}
.article-content ol {
list-style-type: decimal;
font-size: 1em;
}
.article-content li {
margin:1px 0px 1px 20px;
list-style-position: outside;
}
.article-content dl {
list-style-type: decimal;
font-size: 1em;
list-style-position: outside;
margin:20px 0px 20px 20px;
}
.article-content dd {
margin:1px 0px 1px 20px;
padding:3px 0px 3px 0px;
}
.article-content dt {
font-size:1.3em;
}
.page_header h1 {
color:darkred;
padding: 5px 5px 15px 5px;
margin: 20px 0px 20px 0px;
border-bottom: 1px solid rgb(143, 134, 134);
font-size: 3em;
font-weight:normal;
}
.page_header h1 small {
color:rgb(143, 116, 116);
}
.page_header h1 a {
color:darkred;
}
.page_header h1 a:hover {
text-decoration:none;
}
ul.articles_timeline {
list-style:none;
margin:0px;
padding-bottom:30px;
}
ul.articles_timeline li.next_article {
float:right;
margin:0px;
}
ul.articles_timeline li.previous_article {
float:left;
margin:0px;
}
/* Categories */
.list-of-categories span {
vertical-align: super;
font-size: 0.7em;
}
a.list-of-categories {
text-decoration:none;
}
ul.list-articles-category {
list-style:none outside none;
margin:0px 0px 0px 5px;
}
ul.list-articles-category li span{
margin-right:10px;
color:#AAAAAA;
font-family:"PT Sans","Helvetica Neue",Arial,sans-serif;
font-size: 0.9em;
}
a.category-link {
color:rgb(51,51,51);
}
a.category-link:hover {
text-decoration:none;
}
a.list-of-categories {
font-size:1.1em;
font-family: 'Trebuchet MS',Trebuchet,'Lucida Sans Unicode','Lucida Grande','Lucida Sans',Arial,sans-serif;
}
a.list-of-categories:hover {
color:white;
background-color:rgb(0, 136, 204);
border-radius:4px;
}
/* Base CSS */
h2 a {
color:rgb(51,51,51);
}
h2 a:hover {
text-decoration:none;
color:rgb(51,51,51);
}
a {
color:rgb(56, 117, 215);
}
/* archives */
ul.list-all-articles {
list-style:none;
margin:0px;
}
ul.list-all-articles li {
border-bottom:1px dotted black;
padding:0.3em 0em;
font-size:1.1em;
font-family: 'Trebuchet MS',Trebuchet,'Lucida Sans Unicode','Lucida Grande','Lucida Sans',Arial,sans-serif;
}
ul.list-all-articles li time {
float:right;
color:#AAAAAA;
font-family:"PT Sans","Helvetica Neue",Arial,sans-serif;
font-size: 0.9em;
}
/* top menu */
ul.top-menu li a {
font-weight: bold;
}
/* MailChimp */
#mc_embed_signup {
font-size:inherit;
font-family:inherit;
margin:10px 0px;
}
#mc_embed_signup form {
padding:0px;
}
#mc_embed_signup input.button {
width: 100%
}
#mc_embed_signup input.email {
width:100%;
}
#mc_embed_signup .button {
font-size: 1.1em;
}
/* front page */
#allposts {
color:rgb(153, 153, 153);
font-size:75%;
float:right;
font-weight:normal;
}
.proj_desc {
color:#999999;
font-family:"PT Sans","Helvetica Neue",Arial,sans-serif;
font-size: 0.9em;
}
.amp {
font-family:"Warnock Pro", "Goudy Old Style","Palatino","Book Antiqua",serif;
font-style:italic;
}
img {
border: 1px solid #EEEEEE;
}
.table-of-content .toc {
font-size: 0.7em;
}
.last_updated a {
color: black;
border-bottom: thin dashed darkgray;
}
.last_updated a:hover {
text-shadow: none;
text-decoration: none;
border-bottom: medium none;
color: rgb(0, 85, 128);
}
a.headerlink {
visibility:hidden;
padding-left:0.5em;
color:grey;
}
h1:hover > a.headerlink,
h2:hover > a.headerlink,
h3:hover > a.headerlink,
h4:hover > a.headerlink,
h5:hover > a.headerlink,
h6:hover > a.headerlink,
dt:hover > a.headerlink {
visibility: visible;
text-decoration:none;
}

+ 0
- 3
theme/static/css/typogrify.css View File

@ -1,3 +0,0 @@
.caps {font-size:.92em;}
.amp {color:#666; font-size:1.05em;font-family:"Warnock Pro", "Goudy Old Style","Palatino","Book Antiqua",serif; font-style:italic;}
.dquo {margin-left:-.38em;}

+ 0
- 48
theme/static/css/wide.css View File

@ -1,48 +0,0 @@
@import url("main.css");
body {
font:1.3em/1.3 "Hoefler Text","Georgia",Georgia,serif,sans-serif;
}
.post-info{
display: none;
}
#banner nav {
display: none;
-moz-border-radius: 0px;
margin-bottom: 20px;
overflow: hidden;
font-size: 1em;
background: #F5F4EF;
}
#banner nav ul{
padding-right: 50px;
}
#banner nav li{
float: right;
color: #000;
}
#banner nav li a {
color: #000;
}
#banner h1 {
margin-bottom: -18px;
}
#featured, #extras {
padding: 50px;
}
#featured {
padding-top: 20px;
}
#extras {
padding-top: 0px;
padding-bottom: 0px;
}

BIN
theme/static/images/icons/aboutme.png View File

Before After
Width: 16  |  Height: 16  |  Size: 751 B

BIN
theme/static/images/icons/bitbucket.png View File

Before After
Width: 16  |  Height: 16  |  Size: 3.6 KiB

BIN
theme/static/images/icons/delicious.png View File

Before After
Width: 16  |  Height: 16  |  Size: 958 B

BIN
theme/static/images/icons/facebook.png View File

Before After
Width: 16  |  Height: 16  |  Size: 202 B

BIN
theme/static/images/icons/github.png View File

Before After
Width: 32  |  Height: 32  |  Size: 1.7 KiB

BIN
theme/static/images/icons/gitorious.png View File

Before After
Width: 16  |  Height: 16  |  Size: 227 B

BIN
theme/static/images/icons/gittip.png View File

Before After
Width: 16  |  Height: 16  |  Size: 487 B

BIN
theme/static/images/icons/google-groups.png View File

Before After
Width: 16  |  Height: 16  |  Size: 803 B

BIN
theme/static/images/icons/google-plus.png View File

Before After
Width: 16  |  Height: 16  |  Size: 527 B

BIN
theme/static/images/icons/hackernews.png View File

Before After
Width: 16  |  Height: 16  |  Size: 3.2 KiB

BIN
theme/static/images/icons/lastfm.png View File

Before After
Width: 16  |  Height: 16  |  Size: 975 B

BIN
theme/static/images/icons/linkedin.png View File

Before After
Width: 16  |  Height: 16  |  Size: 896 B

BIN
theme/static/images/icons/reddit.png View File

Before After
Width: 16  |  Height: 16  |  Size: 693 B

BIN
theme/static/images/icons/rss.png View File

Before After
Width: 16  |  Height: 16  |  Size: 879 B

BIN
theme/static/images/icons/slideshare.png View File

Before After
Width: 16  |  Height: 16  |  Size: 535 B

BIN
theme/static/images/icons/speakerdeck.png View File

Before After
Width: 16  |  Height: 16  |  Size: 1.0 KiB

BIN
theme/static/images/icons/stackoverflow.png View File

Before After
Width: 16  |  Height: 16  |  Size: 916 B

BIN
theme/static/images/icons/twitter.png View File

Before After
Width: 16  |  Height: 16  |  Size: 1.5 KiB

BIN
theme/static/images/icons/vimeo.png View File

Before After
Width: 16  |  Height: 16  |  Size: 544 B

BIN
theme/static/images/icons/youtube.png View File

Before After
Width: 16  |  Height: 16  |  Size: 458 B

BIN
theme/static/tipuesearch/img/expand.png View File

Before After
Width: 16  |  Height: 16  |  Size: 424 B

BIN
theme/static/tipuesearch/img/link.png View File

Before After
Width: 16  |  Height: 16  |  Size: 463 B

BIN
theme/static/tipuesearch/img/loader.gif View File

Before After
Width: 32  |  Height: 32  |  Size: 4.1 KiB

+ 136
- 0
theme/static/tipuesearch/tipuesearch.css View File

@ -0,0 +1,136 @@
/*
Tipue Search 3.0.1
Copyright (c) 2013 Tipue
Tipue Search is released under the MIT License
http://www.tipue.com/search
*/
#tipue_search_content
{
clear: left;
max-width: 650px;
padding: 25px 0 13px 0;
margin: 0;
}
#tipue_search_loading
{
padding-top: 60px;
background: #fff url('img/loader.gif') no-repeat left;
}
#tipue_search_warning
{
font: 12px/1.6 'open sans', sans-serif;
color: #333;
margin: 7px 0;
}
#tipue_search_warning a
{
color: #3f72d8;
text-decoration: none;
}
#tipue_search_warning a:hover
{
padding-bottom: 1px;
border-bottom: 1px solid #ccc;
}
#tipue_search_results_count, #tipue_search_warning_head
{
color:darkred;
padding: 5px 5px 15px 5px;
margin: 20px 0px 20px 0px;
border-bottom: 1px solid rgb(143, 134, 134);
font-size: 3em;
font-family: Baskerville, Garamond, Georgia, "DejaVu Serif", "Times New Roman", Times, serif;
font-weight: normal;
}
.tipue_search_content_title
{
font: 300 23px/1.6 'open sans', sans-serif;
margin-top: 20px;
}
.tipue_search_content_title a
{
color: #3f72d8;
text-decoration: none;
}
.tipue_search_content_title a:hover
{
padding-bottom: 1px;
border-bottom: 1px solid #ccc;
}
.tipue_search_content_text
{
font-size: 1em;
line-height: 1.6em;
color: #333;
font-variant: normal;
text-transform: none;
padding: 13px 0;
font-family: Scala, Georgia,"DejaVu Serif","Times New Roman",Times,serif;
}
.tipue_search_content_text b {
color:#EF1D1D;
font-family:Garamond;
font-size: 1.3em;
}
.tipue_search_content_loc
{
font: 300 13px/1.7 'open sans', sans-serif;
overflow: auto;
}
.tipue_search_content_loc a
{
color: #555;
text-decoration: none;
}
.tipue_search_content_loc a:hover
{
padding-bottom: 1px;
border-bottom: 1px solid #ccc;
}
#tipue_search_foot
{
margin: 51px 0 21px 0;
}
#tipue_search_foot_boxes
{
padding: 0;
margin: 0;
font: 12px/1 'open sans', sans-serif;
}
#tipue_search_foot_boxes li
{
list-style: none;
margin: 0;
padding: 0;
display: inline;
}
#tipue_search_foot_boxes li a
{
padding: 7px 13px 8px 13px;
background-color: #f1f1f1;
border: 1px solid #dcdcdc;
border-radius: 1px;
color: #333;
margin-right: 7px;
text-decoration: none;
text-align: center;
}
#tipue_search_foot_boxes li.current
{
padding: 7px 13px 8px 13px;
background: #fff;
border: 1px solid #dcdcdc;
border-radius: 1px;
color: #333;
margin-right: 7px;
text-align: center;
}
#tipue_search_foot_boxes li a:hover
{
border: 1px solid #ccc;
background-color: #f3f3f3;
}

+ 12
- 0
theme/static/tipuesearch/tipuesearch.min.js
File diff suppressed because it is too large
View File


+ 52
- 0
theme/static/tipuesearch/tipuesearch_set.js View File

@ -0,0 +1,52 @@
/*
Tipue Search 3.0.1
Copyright (c) 2013 Tipue
Tipue Search is released under the MIT License
http://www.tipue.com/search
*/
var tipuesearch_stop_words = ["and", "be", "by", "do", "for", "he", "how", "if", "is", "it", "my", "not", "of", "or", "the", "to", "up", "what", "when"];
var tipuesearch_replace = {"words": [
{"word": "tipua", replace_with: "tipue"},
{"word": "javscript", replace_with: "javascript"}
]};
var tipuesearch_stem = {"words": [
{"word": "e-mail", stem: "email"},
{"word": "javascript", stem: "script"},
{"word": "javascript", stem: "js"}
]};
var tipuesearch_pages;
exclude_pages = ['/archives.html', '/tags.html', '/index.html', '/categories.html', '/search.html'];
function showGetResult()
{
var result = new Array();
var scriptUrl = 'sitemap.xml';
$.ajax({
url: scriptUrl,
type: 'GET',
dataType: 'xml',
async: false,
success: function(xml) {
$(xml).find('url').each(function(){
var loc = $(this).find('loc').text();
if ($.inArray(loc, exclude_pages) < 0) {
result.push(loc);
}
});
},
error: function() {
alert('An error occurred while processing XML file.');
}
});
return result;
}
var r = showGetResult();
tipuesearch_pages = r;

+ 30
- 0
theme/templates/404.html View File

@ -0,0 +1,30 @@
{% extends "base.html" %}
{% block title %}
Page not found · {{ super() }}
{% endblock title %}
{% block head_description %}
Page does not exist at {{ SITENAME|striptags }} blog.
{% endblock head_description %}
{% block content %}
<div class="row-fluid">
<header class="page_header span10 offset2">
<h1>That page doesn't exist!</h1>
</header>
</div>
<div class="row-fluid">
<div class="span8 offset2">
<p>Sorry, but the page you are looking for cannot be found. It seems that the page you were trying to reach doesn't exist, or may be it has just moved, or it no longer exists.</p>
<p>The best thing to do is to use the search form or start again from the <a href="{{ SITEURL }}">home page</a>.</p>
<div class="input-append">
<form action="{{ SITEURL }}/search.html" onsubmit="return validateForm(this.elements['q'].value)">
<input type="text" class="span12" placeholder="Search" name="q" id="tipue_search_input_404">
<button class="btn" type="button">Search</button>
</form>
</div>
</div>
</div>
{% endblock content %}

+ 2
- 36
theme/templates/analytics.html View File

@ -5,42 +5,8 @@
_gaq.push(['_trackPageview']);
(function() {
var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;
ga.src = 'https://ssl.google-analytics.com/ga.js';
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 %}
{% if GAUGES %}
<script type="text/javascript">
var _gauges = _gauges || [];
(function() {
var t = document.createElement('script');
t.type = 'text/javascript';
t.async = true;
t.id = 'gauges-tracker';
t.setAttribute('data-site-id', '{{GAUGES}}');
t.src = '//secure.gaug.es/track.js';
var s = document.getElementsByTagName('script')[0];
s.parentNode.insertBefore(t, s);
})();
</script>
{% endif %}
{% if PIWIK_URL and PIWIK_SITE_ID %}
<script type="text/javascript">
{% if PIWIK_SSL_URL %}
var pkBaseURL = "{{ PIWIK_SSL_URL }}";
{% else %}
var pkBaseURL = "{{ PIWIK_URL }}";
{% endif %}
var _paq = _paq || [];
_paq.push(["trackPageView"]);
_paq.push(["enableLinkTracking"]);
(function() {
var u=(("https:" == document.location.protocol) ? "https" : "http")+"://"+pkBaseURL+"/";
_paq.push(["setTrackerUrl", u+"piwik.php"]);
_paq.push(["setSiteId", "{{ PIWIK_SITE_ID }}"]);
var d=document, g=d.createElement("script"), s=d.getElementsByTagName("script")[0]; g.type="text/javascript";
g.defer=true; g.async=true; g.src=u+"piwik.js"; s.parentNode.insertBefore(g,s);
})();
</script>
{% endif %}
{% endif %}

+ 28
- 12
theme/templates/archives.html View File

@ -1,13 +1,29 @@
{% extends "base.html" %}
{% extends "base.html" %}
{% block title %}
All Posts · {{ super() }}
{% endblock title %}
{% block head_description %}
Full archives of {{ SITENAME|striptags }} blog.
{% endblock head_description %}
{% block content %}
<section id="content" class="body">
<h1>Archives for {{ SITENAME }}</h1>
<dl>
{% for article in dates %}
<dt>{{ article.locale_date }}</dt>
<dd><a href="{{ SITEURL }}/{{ article.url }}">{{ article.title }}</a></dd>
{% endfor %}
</dl>
</section>
{% endblock %}
<div class="row-fluid">
<header class="page_header span10 offset2">
<h1><a href="/archives.html">All Posts</a></h1>
</header>
</div>
<div class="row-fluid">
<div class="span8 offset2">
<ul class="list-all-articles">
{% for article in dates %}
<li><a href="{{ SITEURL }}/{{ article.url }}">{{ article.title }} {%if article.subtitle %} <small> {{ article.subtitle }} </small> {% endif %} </a>
<time pubdate="pubdate" datetime="{{ article.date.isoformat() }}">{{ article.locale_date }}</time>
</li>
{% endfor %}
</ul>
</div>
</div>
{% endblock content %}

+ 148
- 32
theme/templates/article.html View File

@ -1,39 +1,155 @@
{% extends "base.html" %}
{% import 'pcs/comments.html' as pcs with context %}
{% block title %}{{ article.title|striptags }}{% endblock %}
{% block title %}
{{ article.title }} {%if article.subtitle %} - {{ article.subtitle }} {% endif %} · {{ super() }}
{% endblock title %}
{% block head_description %}
{% if article.summary %}
{{ article.summary|striptags }}
{% endif %}
{% endblock head_description %}
{% block meta_tags_in_head %}
{% if article.tags or article.category or article.keywords %}
<meta name="keywords" content="{{ [article.tags|join(', '), article.category, article.keywords]|join(', ') }}" />
{% endif %}
{% endblock meta_tags_in_head %}
{% block content %}
<section id="content" class="body">
<article>
<header>
<h1 class="entry-title">
<a href="{{ SITEURL }}/{{ article.url }}" rel="bookmark"
title="Permalink to {{ article.title|striptags }}">{{ article.title }}</a></h1>
{% include 'twitter.html' %}
<article>
<div class="row-fluid">
<header class="page_header span10 offset2">
<h1><a href="{{ SITEURL }}/{{ article.url }}"> {{ article.title }} {%if article.subtitle %} <small> {{ article.subtitle }} </small> {% endif %} </a></h1>
</header>
</div>
<div class="entry-content">
{% include 'article_infos.html' %}
{{ article.content }}
{{ pcs.comments_quickstart("blog.victorhery", "victor-hery.com") }}
</div><!-- /.entry-content -->
{% if DISQUS_SITENAME and SITEURL and article.status != "draft" %}
<div class="comments">
<h2>Comments !</h2>
<div id="disqus_thread"></div>
<script type="text/javascript">
var disqus_shortname = '{{ DISQUS_SITENAME }}';
var disqus_identifier = '{{ article.url }}';
var disqus_url = '{{ SITEURL }}/{{ article.url }}';
(function() {
var dsq = document.createElement('script'); dsq.type = 'text/javascript'; dsq.async = true;
dsq.src = '//{{ DISQUS_SITENAME }}.disqus.com/embed.js';
(document.getElementsByTagName('head')[0] || document.getElementsByTagName('body')[0]).appendChild(dsq);
})();
</script>
<noscript>Please enable JavaScript to view the comments.</noscript>
<div class="row-fluid">
{% if article.toc %}
<div class="span2 table-of-content">
<nav>
<h4>Contents</h4>
{{ article.toc }}
</nav>
</div>
{% endif %}
<div class="span8 article-content">
{% else %}
<div class="span8 offset2 article-content">
{% endif %}
</article>
</section>
{% endblock %}
{{ article.content }}
{{ pcs.comments_quickstart("blog.victorhery", "victor-hery.com") }}
<aside>
<hr/>
{% for an_article in dates %}
{% if an_article.url == article.url %}
{% set index = loop.index0 %}
{% if not loop.first %}
{% set next_article = dates[index-1] %}
{% endif %}
{% if not loop.last %}
{% set previous_article = dates[index+1] %}
{% endif %}
<nav>
<ul class="articles_timeline">
{% if previous_article %}
{% set ptitle = previous_article.title %}
{% set pv_title = ptitle %}
{%if previous_article.subtitle %}
{% set pv_title = ptitle + " " + "<small>" + previous_article.subtitle + "</small>" %}
{% set ptitle = ptitle + " - " + previous_article.subtitle %}
{% endif %}
<li class="previous_article">« <a href="{{ SITEURL }}/{{ previous_article.url }}" title="Previous: {{ ptitle }}">{{ pv_title }}</a></li>
{% endif %}
{% if next_article %}
{% set ntitle = next_article.title %}
{% set nv_title = ntitle %}
{%if next_article.subtitle %}
{% set nv_title = ntitle + " " + "<small>" + next_article.subtitle + "</small>" %}
{% set ntitle = ntitle + " - " + next_article.subtitle %}
{% endif %}
<li class="next_article"><a href="{{ SITEURL }}/{{ next_article.url }}" title="Next: {{ ntitle }}">{{ nv_title }}</a> »</li>
{% endif %}
</ul>
</nav>
{% endif %}
{% endfor %}
</aside>
</div>
<section>
<div class="span2" style="float:right;font-size:0.9em;">
{% if article.date %}
<h4>Published</h4>
{% set day = article.date.strftime('%d')|int %}
<time pubdate="pubdate" datetime="{{ article.date.isoformat() }}">{{ article.date.strftime('%b') }} {{ day }} {{- article.date.strftime(', %Y') }}</time>
{% endif %}
{% if article.modified %}
<h4>Last Updated</h4>
<div class="last_updated">{{ article.modified }}</div>
{% endif %}
{% if article.category %}
<h4>Category</h4>
<a class="category-link" href="/categories.html#{{ category|replace(' ', '-')|e }}-ref">{{ article.category }}</a>
{% endif %}
{% if article.tags %}
<h4>Tags</h4>
<ul class="list-of-tags tags-in-article">
{% for tag in article.tags|sort %}
<li><a href="/tags.html#{{ tag|replace(' ', '-')|e }}-ref">{{ tag }}
{% for aTag, tagged_articles in tags if aTag == tag %}
<span>{{ tagged_articles|count }}</span>
{% endfor %}</a></li>
{% endfor %}
</ul>
{% endif %}
{% if MAILCHIMP_FORM_ACTION %}
{% if not EMAIL_SUBSCRIPTION_LABEL %}
{% set EMAIL_SUBSCRIPTION_LABEL='Email Newsletter' %}
{% endif %}
{% if not SUBSCRIBE_BUTTON_TITLE %}
{% set SUBSCRIBE_BUTTON_TITLE='Subscribe' %}
{% endif %}
{% if not EMAIL_PLACEHOLDER %}
{% set EMAIL_PLACEHOLDER ='email address' %}
{% endif %}
<!-- Begin MailChimp Signup Form -->
<div id="mc_embed_signup">
<form action="{{ MAILCHIMP_FORM_ACTION }}" method="post" id="mc-embedded-subscribe-form" name="mc-embedded-subscribe-form" class="validate" target="_blank" novalidate>
<h4>{{ EMAIL_SUBSCRIPTION_LABEL }}</h4>
<input type="email" value="" name="EMAIL" class="email" id="mce-EMAIL" placeholder="{{ EMAIL_FIELD_PLACEHOLDER }}" required>
<div class="clear"><input type="submit" value="{{ SUBSCRIBE_BUTTON_TITLE }}" name="subscribe" id="mc-embedded-subscribe" class="button"></div>
</form>
</div>
<!--End mc_embed_signup-->
{% endif %}
</div>
</section>
</div>
</article>
{% endblock content %}
{% block script %}
{{ super() }}
{% include 'disqus_script_count.html' %}
{% if DISQUS_SITENAME and SITEURL and article.status != "draft" %}
<script language="javascript" type="text/javascript">
function uncollapse() {
var hash_str = window.location.hash;
if (window.location.hash.match(/^#comment-\d+$/))
{
var hash_str = '#disqus_thread';
}
$(hash_str).collapse({
toggle: true
})
}
</script>
<script type="text/javascript" language="JavaScript">
uncollapse();
</script>
{% endif %}
{% endblock script %}

+ 0
- 23
theme/templates/article_infos.html View File

@ -1,23 +0,0 @@
<footer class="post-info">
<abbr class="published" title="{{ article.date.isoformat() }}">
Published: {{ article.locale_date }}
</abbr>
{% if article.modified %}
<br />
<abbr class="modified" title="{{ article.modified.isoformat() }}">
Updated: {{ article.locale_modified }}
</abbr>
{% endif %}
{% if article.authors %}
<address class="vcard author">
By {% for author in article.authors %}
<a class="url fn" href="{{ SITEURL }}/{{ author.url }}">{{ author }}</a>
{% endfor %}
</address>
{% endif %}
<p>In <a href="{{ SITEURL }}/{{ article.category.url }}">{{ article.category }}</a>.</p>
{% include 'taglist.html' %}
{% import 'translations.html' as translations with context %}
{{ translations.translations_for(article) }}
</footer><!-- /.post-info -->

+ 0
- 2
theme/templates/author.html View File

@ -1,2 +0,0 @@
{% extends "index.html" %}
{% block title %}{{ SITENAME }} - {{ author }}{% endblock %}

+ 0
- 16
theme/templates/authors.html View File

@ -1,16 +0,0 @@
{% extends "base.html" %}
{% block title %}{{ SITENAME }} - Authors{% endblock %}
{% block content %}
<section id="content" class="body">
<h1>Authors on {{ SITENAME }}</h1>
<ul>
{% for author, articles in authors|sort %}
<li><a href="{{ SITEURL }}/{{ author.url }}">{{ author }}</a> ({{ articles|count }})</li>
{% endfor %}
</ul>
</section>
{% endblock %}

+ 83
- 75
theme/templates/base.html View File

@ -1,82 +1,90 @@
<!DOCTYPE html>
<html lang="{{ DEFAULT_LANG }}">
<head>
<meta charset="utf-8" />
<title>{% block title %}{{ SITENAME }}{%endblock%}</title>
<link rel="stylesheet" href="{{ SITEURL }}/{{ THEME_STATIC_DIR }}/css/{{ CSS_FILE }}" />
{% if FEED_ALL_ATOM %}
<link href="{{ FEED_DOMAIN }}/{{ FEED_ALL_ATOM }}" type="application/atom+xml" rel="alternate" title="{{ SITENAME }} Atom Feed" />
<html lang="en-US">
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
{% if article and article.author %}
<meta name="author" content="{{ article.author }}" />
<meta name="copyright" content="{{ article.author }}" />
{% elif page and page.author %}
<meta name="author" content="{{ page.author }}" />
<meta name="copyright" content="{{ page.author }}" />
{% else %}
<meta name="author" content="{{ AUTHOR }}" />
<meta name="copyright" content="{{ AUTHOR }}" />
{% endif %}
{% if FEED_ALL_RSS %}
<link href="{{ FEED_DOMAIN }}/{{ FEED_ALL_RSS }}" type="application/rss+xml" rel="alternate" title="{{ SITENAME }} RSS Feed" />
{% endif %}
<!--[if IE]>
<script src="https://html5shiv.googlecode.com/svn/trunk/html5.js"></script>
<![endif]-->
</head>
<body id="index" class="home">
{% include 'github.html' %}
<header id="banner" class="body">
<h1><a href="{{ SITEURL }}/">{{ SITENAME }} {% if SITESUBTITLE %} <strong>{{ SITESUBTITLE }}</strong>{% endif %}</a></h1>
<nav><ul>
{% for title, link in MENUITEMS %}
<li><a href="{{ link }}">{{ title }}</a></li>
{% endfor %}
{% if DISPLAY_PAGES_ON_MENU -%}
{% for pg in PAGES %}
<li{% if pg == page %} class="active"{% endif %}><a href="{{ SITEURL }}/{{ pg.url }}">{{ pg.title }}</a></li>
{% endfor %}
{% endif %}
{% if DISPLAY_CATEGORIES_ON_MENU -%}
{% for cat, null in categories %}
<li{% if cat == category %} class="active"{% endif %}><a href="{{ SITEURL }}/{{ cat.url }}">{{ cat }}</a></li>
{% endfor %}
{% endif %}
</ul></nav>
</header><!-- /#banner -->
{% block content %}
{% endblock %}
<section id="extras" class="body">
{% if LINKS %}
<div class="blogroll">
<h2>blogroll</h2>
<ul>
{% for name, link in LINKS %}
<li><a href="{{ link }}">{{ name }}</a></li>
{% endfor %}
</ul>
</div><!-- /.blogroll -->
{% if SITE_DESCRIPTION %}
<meta name="description" content="{% block head_description %}{{ SITE_DESCRIPTION }}{% endblock head_description %}" />
{% endif %}
{% if SOCIAL or FEED_ALL_ATOM or FEED_ALL_RSS %}
<div class="social">
<h2>social</h2>
<ul>
{% if FEED_ALL_ATOM %}
<li><a href="{{ FEED_DOMAIN }}/{{ FEED_ALL_ATOM }}" type="application/atom+xml" rel="alternate">atom feed</a></li>
{% block meta_tags_in_head %}
{% endblock meta_tags_in_head %}
<title>{% block title %}{{ SITENAME|striptags }}{% endblock title %}</title>
{% block head_links %}
<link href="http://cdn-images.mailchimp.com/embedcode/slim-081711.css" rel="stylesheet" type="text/css">
<link href="//netdna.bootstrapcdn.com/twitter-bootstrap/2.3.1/css/bootstrap-combined.min.css" rel="stylesheet">
<link rel="stylesheet" type="text/css" href="{{ SITEURL }}/theme/css/style.css" media="screen">
<link rel="stylesheet" type="text/css" href="{{ SITEURL }}/theme/css/solarizedlight.css" media="screen">
{% endblock head_links %}
<link rel="shortcut icon" href="{{ SITEURL }}/theme/images/favicon.ico" type="image/x-icon" />
<link rel="apple-touch-icon" href="{{ SITEURL }}/theme/images/apple-touch-icon.png" />
<link rel="apple-touch-icon" sizes="57x57" href="{{ SITEURL }}/theme/images/apple-touch-icon-57x57.png" />
<link rel="apple-touch-icon" sizes="72x72" href="{{ SITEURL }}/theme/images/apple-touch-icon-72x72.png" />
<link rel="apple-touch-icon" sizes="114x114" href="{{ SITEURL }}/theme/images/apple-touch-icon-114x114.png" />
<link rel="apple-touch-icon" sizes="144x144" href="{{ SITEURL }}/theme/images/apple-touch-icon-144x144.png" />
<link rel="icon" href="{{ SITEURL }}/theme/images/apple-touch-icon-144x144.png" />
{% include 'feeds.html' %}
{% include 'analytics.html' %}
</head>
<body>
<div id="content-sans-footer">
<div class="navbar navbar-static-top">
<div class="navbar-inner">
<div class="container">
<a class="btn btn-navbar" data-toggle="collapse" data-target=".nav-collapse">
<span class="icon-bar"></span>
<span class="icon-bar"></span>
<span class="icon-bar"></span>
</a>
<a class="brand" href="{{ SITEURL }}/"><span class=site-name>{{ SITENAME }}</span></a>
<div class="nav-collapse collapse">
<ul class="nav pull-right top-menu">
<li {% if page_name == "index" %} class="active"{% endif %}><a href="{{ SITEURL }}">Home</a></li>
{% if DISPLAY_PAGES_ON_MENU %}
{% for page in pages %}
<li {% if output_file == page.url %} class="active"{% endif %}><a href="{{ SITEURL }}/{{ page.url }}">{{ page.title }}</a></li>
{% endfor %}
{% endif %}
{% if FEED_ALL_RSS %}
<li><a href="{{ FEED_DOMAIN }}/{{ FEED_ALL_RSS }}" type="application/rss+xml" rel="alternate">rss feed</a></li>
{% endif %}
{% for name, link in SOCIAL %}
<li><a href="{{ link }}">{{ name }}</a></li>
{% endfor %}
<li {% if page_name == "categories" %} class="active"{% endif %}><a href="{{ SITEURL }}/categories.html">Categories</a></li>
<li {% if page_name == "tags" %} class="active"{% endif %}><a href="{{ SITEURL }}/tags.html">Tags</a></li>
<li {% if page_name == "archives" %} class="active"{% endif %}><a href="{{ SITEURL }}/archives.html">Archives</a></li>
<li><form class="navbar-search" action="{{ SITEURL }}/search.html" onsubmit="return validateForm(this.elements['q'].value);"> <input type="text" class="search-query" placeholder="Search" name="q" id="tipue_search_input"></form></li>
</ul>
</div><!-- /.social -->
{% endif %}
</section><!-- /#extras -->
<footer id="contentinfo" class="body">
<address id="about" class="vcard body">
Proudly powered by <a href="http://getpelican.com/">Pelican</a>, which takes great advantage of <a href="http://python.org">Python</a>.
</address><!-- /#about -->
<p>The theme is by <a href="http://coding.smashingmagazine.com/2009/08/04/designing-a-html-5-layout-from-scratch/">Smashing Magazine</a>, thanks!</p>
</footer><!-- /#contentinfo -->
{% include 'analytics.html' %}
{% include 'disqus_script.html' %}
</body>
</div>
</div>
</div>
</div>
<div class="container-fluid">
<div class="row-fluid">
<div class="span1"></div>
<div class="span10">
{% block content %}
{% endblock content %}
</div>
<div class="span1"></div>
</div>
</div>
</div>
{% include 'footer.html' %}
{% block script %}
<script src="http://code.jquery.com/jquery.min.js"></script>
<script src="//netdna.bootstrapcdn.com/twitter-bootstrap/2.3.1/js/bootstrap.min.js"></script>
<script>
function validateForm(query)
{
return (query.length > 0);
}
</script>
{% endblock script %}
</body>
</html>

+ 57
- 0
theme/templates/categories.html View File

@ -0,0 +1,57 @@
{% extends "base.html" %}
{% block title %}
All Categories · {{ super() }}
{% endblock title %}
{% block head_description %}
All categories of the {{ SITENAME|striptags }} blog.
{% endblock head_description %}
{% block content %}
<div class="row-fluid">
<header class="page_header span10 offset2">
<h1><a href="/categories.html">All Categories</a></h1>
</header>
</div>
<div class="row-fluid">
<div class="span8 offset2">
<div class="accordion" id="accordion2">
{% for category, articles in categories %}
<div class="accordion-group">
<div class="accordion-heading">
<a class="accordion-toggle list-of-categories" data-toggle="collapse" data-parent="#accordion2" href="#{{ category|replace(' ', '-')|e }}-ref">
{% set num = articles|count %}
{{ category }}<span>{{ num }}</span>
</a>
</div>
<div id="{{ category|replace(' ', '-')|e }}-ref" class="accordion-body collapse">
<div class="accordion-inner">
<ul class="list-articles-category">
{% for article in articles %}
<li><span><time pubdate="pubdate" datetime="{{ article.date.isoformat() }}">{{ article.locale_date }}</time></span> <a href="{{ SITEURL }}/{{ article.url }}">{{ article.title }} {%if article.subtitle %} <small> {{ article.subtitle }} </small> {% endif %} </a></li>
{% endfor %}
</ul>
</div>
</div>
</div>
{% endfor %}
</div>
</div>
</div>
{% endblock content %}
{% block script %}
{{ super() }}
<script language="javascript" type="text/javascript">
function uncollapse() {
$(window.location.hash).collapse({
toggle: true
})
}
</script>
<script type="text/javascript" language="JavaScript">
uncollapse();
</script>
{% endblock script %}

+ 0
- 2
theme/templates/category.html View File

@ -1,2 +0,0 @@
{% extends "index.html" %}
{% block title %}{{ SITENAME }} - {{ category }}{% endblock %}

+ 27
- 1
theme/templates/comments.html View File

@ -1 +1,27 @@
{% if DISQUS_SITENAME %}<p>There are <a href="{{ SITEURL }}/{{ article.url }}#disqus_thread">comments</a>.</p>{% endif %}
{% if DISQUS_SITENAME and SITEURL and article.status != "draft" %}
<section>
{% if COMMENTS_INTRO %}
<p id="comment-message">{{ COMMENTS_INTRO }} </p>
{% endif %}
<div class="accordion" id="accordion2">
<div class="accordion-group">
<div class="accordion-heading">
<a class="accordion-toggle disqus-comment-count" data-toggle="collapse" data-parent="#accordion2"
{% if article.disqus_identifier %}
data-disqus-identifier="{{ article.disqus_identifier }}"
{% endif %}
href="{{ SITEURL }}/{{ article.url }}#disqus_thread">
Comments
</a>
</div>
<div id="disqus_thread" class="accordion-body collapse">
<div class="accordion-inner">
<div class="comments">
{% include 'disqus_script_comment.html' %}
</div>
</div>
</div>
</div>
</div>
</section>
{% endif %}

+ 18
- 0
theme/templates/disqus_script_comment.html View File

@ -0,0 +1,18 @@
<div id="disqus_thread"></div>
<script type="text/javascript">
var disqus_shortname = '{{ DISQUS_SITENAME }}';
{% if article.disqus_identifier %}
var disqus_identifier = '{{ article.disqus_identifier }}';
{% else %}
var disqus_identifier = '{{ SITEURL }}/{{ article.url }}';
{% endif %}
var disqus_url = '{{ SITEURL }}/{{ article.url }}';
(function() {
var dsq = document.createElement('script'); dsq.type = 'text/javascript'; dsq.async = true;
dsq.src = '//' + 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>
<a href="http://disqus.com" class="dsq-brlink">comments powered by <span class="logo-disqus">Disqus</span></a>

theme/templates/disqus_script.html → theme/templates/disqus_script_count.html View File

@ -1,11 +1,12 @@
{% if DISQUS_SITENAME %}
{% if DISQUS_SITENAME and SITEURL and article.status != "draft" %}
<script type="text/javascript">
var disqus_shortname = '{{ DISQUS_SITENAME }}';
(function () {
var s = document.createElement('script'); s.async = true;
s.type = 'text/javascript';
s.src = 'https://' + disqus_shortname + '.disqus.com/count.js';
s.src = '//' + disqus_shortname + '.disqus.com/count.js';
(document.getElementsByTagName('HEAD')[0] || document.getElementsByTagName('BODY')[0]).appendChild(s);
}());
</script>
</script>
{% endif %}

+ 36
- 0
theme/templates/feeds.html View File

@ -0,0 +1,36 @@
{% if FEED_ALL_ATOM %}
<link href="{{ FEED_DOMAIN }}/{{ FEED_ALL_ATOM }}" type="application/atom+xml" rel="alternate" title="{{ SITENAME|striptags }} - Full Atom Feed" />
{% endif %}
{% if FEED_ALL_RSS %}
<link href="{{ FEED_DOMAIN }}/{{ FEED_ALL_RSS }}" type="application/rss+xml" rel="alternate" title="{{ SITENAME|striptags }} - Full RSS Feed" />
{% endif %}
{% if FEED_ATOM %}
<link href="{{ FEED_DOMAIN }}/{{ FEED_ATOM }}" type="application/atom+xml" rel="alternate" title="{{ SITENAME|striptags }} - Atom Feed" />
{% endif %}
{% if FEED_RSS %}
<link href="{{ FEED_DOMAIN }}/{{ FEED_RSS }}" type="application/rss+xml" rel="alternate" title="{{ SITENAME|striptags }} - RSS Feed" />
{% endif %}
{% if CATEGORY_FEED_ATOM %}
{% for category in categories %}
{% set cat_name = category[0]|replace(' ', '-') %}
<link href="{{ FEED_DOMAIN }}/{{ CATEGORY_FEED_ATOM|format(cat_name) }}" type="application/atom+xml" rel="alternate" title="{{ SITENAME|striptags }} - {{category[0]}} Category Atom Feed" />
{% endfor %}
{% endif %}
{% if CATEGORY_FEED_RSS %}
{% for category in categories %}
{% set cat_name = category[0]|replace(' ', '-') %}
<link href="{{ FEED_DOMAIN }}/{{ CATEGORY_FEED_RSS|format(cat_name) }}" type="application/atom+xml" rel="alternate" title="{{ SITENAME|striptags }} - {{category[0]}} Category RSS Feed" />
{% endfor %}
{% endif %}
{% if TAG_FEED_ATOM %}
{% for tag in tags %}
{% set tag_name = tag[0]|replace(' ', '-') %}
<link href="{{ FEED_DOMAIN }}/{{ TAG_FEED_ATOM|format(tag_name) }}" type="application/atom+xml" rel="alternate" title="{{ SITENAME|striptags }} - {{tag[0]}} Tag Atom Feed" />
{% endfor %}
{% endif %}
{% if TAG_FEED_RSS %}
{% for tag in tags %}
{% set tag_name = tag[0]|replace(' ', '-') %}
<link href="{{ FEED_DOMAIN }}/{{ TAG_FEED_RSS|format(tag_name) }}" type="application/atom+xml" rel="alternate" title="{{ SITENAME|striptags }} - {{tag[0]}} Tag RSS Feed" />
{% endfor %}
{% endif %}

+ 13
- 0
theme/templates/footer.html View File

@ -0,0 +1,13 @@
<footer>
<div id="footer">
<ul class="footer-content">
{% if SITESUBTITLE %}
<li class="elegant-subtitle"><span class="site-name">{{ SITENAME }}</span> - {{ SITESUBTITLE }}</li>
{% endif %}
{% if SITE_LICENSE %}
<li class="elegant-license">{{ SITE_LICENSE }}</li>
{% endif %}
<li class="elegant-power">Powered by <a href="http://getpelican.com/" title="Pelican Home Page">Pelican</a>. Theme: <a href="http://oncrashreboot.com/pelican-elegant" title="Theme Elegant Home Page">Elegant</a> by <a href="http://oncrashreboot.com" title="Talha Mansoor Home Page">Talha Mansoor</a></li>
</ul>
</div>
</footer>

+ 0
- 9
theme/templates/github.html View File

@ -1,9 +0,0 @@
{% if GITHUB_URL %}
<a href="{{ GITHUB_URL }}">
{% if GITHUB_POSITION != "left" %}
<img style="position: absolute; top: 0; right: 0; border: 0;" src="https://s3.amazonaws.com/github/ribbons/forkme_right_red_aa0000.png" alt="Fork me on GitHub" />
{% else %}
<img style="position: absolute; top: 0; left: 0; border: 0;" src="https://s3.amazonaws.com/github/ribbons/forkme_left_white_ffffff.png" alt="Fork me on GitHub" />
{% endif %}
</a>
{% endif %}

+ 58
- 52
theme/templates/index.html View File

@ -1,59 +1,65 @@
{% extends "base.html" %}
{% block content_title %}{% endblock %}
{% block title %}
{{ super() }}
{% endblock title %}
{% block content %}
{% if articles %}
{% for article in articles_page.object_list %}
<div class="row-fluid">
{% if LANDING_PAGE_ABOUT and LANDING_PAGE_ABOUT.title %}
<header class="page_header span12">
<h1><a href="{{ SITEURL }}">{{ LANDING_PAGE_ABOUT.title }}</a></h1>
</header>
{% endif %}
{# First item #}
{% if loop.first and articles_page.has_previous() %}
<aside id="featured" class="body">
<article>
<h1 class="entry-title"><a href="{{ SITEURL }}/{{ article.url }}">{{ article.title }}</a></h1>
{% include 'article_infos.html' %}{{ article.content }}{% include 'comments.html' %}
</article>
</aside><!-- /#featured -->
{% if loop.length > 1 %}
<section id="content" class="body">
<h1>Other articles</h1>
<hr />
<ol id="posts-list" class="hfeed">
{% endif %}
{# other items #}
{% else %}
{% if loop.first %}
<section id="content" class="body">
<ol id="posts-list" class="hfeed" start="{{ articles_paginator.per_page -1 }}">
{% endif %}
<li><article class="hentry">
<header>
<h1><a href="{{ SITEURL }}/{{ article.url }}" rel="bookmark"
title="Permalink to {{ article.title|striptags }}">{{ article.title }}</a></h1>
</header>
<div class="row-fluid">
{% if LANDING_PAGE_ABOUT and LANDING_PAGE_ABOUT.details %}
<div class="span8">
<header>
<h1 id="about-me">About me</h1>
</header>
<div class="article-content">
{{ LANDING_PAGE_ABOUT.details }}
</div>
</div>
{% endif %}
<div class="entry-content">
{% include 'article_infos.html' %}
{{ article.summary }}
<a class="readmore" href="{{ SITEURL }}/{{ article.url }}">read more</a>
{% include 'comments.html' %}
</div><!-- /.entry-content -->
</article></li>
{% if PROJECTS %}
<div class="span4">
<header>
<h1 id="my-projects">My Projects</h1>
{% for project in PROJECTS %}
<ul class="list-all-articles">
<li>
<a href="{{ project.url }}" title="{{ project.name }}">{{ project.name }}</a> <span class="proj_desc">{{ project.description }}</span>
</li>
</ul>
{%endfor %}
</div>
{% endif %}
{% if loop.last %}
{% if loop.length > 1 or articles_page.has_other_pages() %}
</ol><!-- /#posts-list -->
{% if articles_page.has_other_pages() %}
{% include 'pagination.html' %}
{% endif %}
</section><!-- /#content -->
</div>
{% if articles %}
<div class="row-fluid">
<div class="span12">
<header>
<h1 id="recent-posts">Recent Posts <a id="allposts" href="{{ SITEURL }}/archives.html">all posts</a></h1>
</header>
{% for article in articles %}
{% if not RECENT_ARTICLES_COUNT %}
{% set RECENT_ARTICLES_COUNT = 10 %}
{% endif %}
{% endif %}
{% endfor %}
{% else %}
<section id="content" class="body">
<h2>Pages</h2>
{% for page in PAGES %}
<li><a href="{{ SITEURL }}/{{ page.url }}">{{ page.title }}</a></li>
{% endfor %}
</section>
{% endif %}
{% if loop.index0 < RECENT_ARTICLES_COUNT %}
<ul class="list-all-articles">
<li>
<a href="{{ SITEURL }}/{{ article.url }}">{{ article.title }} {%if article.subtitle %} <small> {{ article.subtitle }} </small> {% endif %} </a>
<time pubdate="pubdate" datetime="{{ article.date.isoformat() }}">{{ article.locale_date }}</time>
</li>
</ul>
{% endif %}
{% endfor %}
</div>
</div>
{% endif %}
</div>
{% endblock content %}

+ 81
- 8
theme/templates/page.html View File

@ -1,10 +1,83 @@
{% extends "base.html" %}
{% block title %}{{ page.title }}{% endblock %}
{% block title %}
{{ page.title }} {%if page.subtitle %} - {{ page.subtitle }} {% endif %} · {{ super() }}
{% endblock title %}
{% block head_description %}
{% if page.summary %}
{{ page.summary|striptags }}
{% endif %}
{% endblock head_description %}
{% block meta_tags_in_head %}
{% if page.keywords %}
<meta name="keywords" content="{{ page.keywords }}" />
{% endif %}
{% endblock meta_tags_in_head %}
{% block content %}
<section id="content" class="body">
<h1 class="entry-title">{{ page.title }}</h1>
{% import 'translations.html' as translations with context %}
{{ translations.translations_for(page) }}
{{ page.content }}
</section>
{% endblock %}
<article>
<div class="row-fluid">
<header class="page_header span10 offset2">
<h1><a href="{{ SITEURL }}/{{ page.url }}"> {{ page.title }} {%if page.subtitle %} <small> {{ page.subtitle }} </small> {% endif %} </a></h1>
</header>
</div>
<div class="row-fluid">
{% if page.toc %}
<div class="span2 table-of-content">
<nav>
<h4>Contents</h4>
{{ page.toc }}
</nav>
</div>
<div class="span8 article-content">
{% else %}
<div class="span8 offset2 article-content">
{% endif %}
{{ page.content }}
</div>
<section>
<div class="span2" style="float:right;font-size:0.9em;">
{% if page.date %}
<h4>Published</h4>
{% set day = page.date.strftime('%d')|int %}
<time pubdate="pubdate" datetime="{{ page.date.isoformat() }}">{{ page.date.strftime('%b') }} {{ day }} {{- page.date.strftime(', %Y') }}</time>
{% endif %}
{% if page.modified %}
<h4>Last Updated</h4>
<div class="last_updated">{{ page.modified }}</div>
{% endif %}
{% if MAILCHIMP_FORM_ACTION %}
{% if not EMAIL_SUBSCRIPTION_LABEL %}
{% set EMAIL_SUBSCRIPTION_LABEL='Email Newsletter' %}
{% endif %}
{% if not SUBSCRIBE_BUTTON_TITLE %}
{% set SUBSCRIBE_BUTTON_TITLE='Subscribe' %}
{% endif %}
{% if not EMAIL_PLACEHOLDER %}
{% set EMAIL_PLACEHOLDER ='email address' %}
{% endif %}
<!-- Begin MailChimp Signup Form -->
<div id="mc_embed_signup">
<form action="{{ MAILCHIMP_FORM_ACTION }}" method="post" id="mc-embedded-subscribe-form" name="mc-embedded-subscribe-form" class="validate" target="_blank" novalidate>
<h4>{{ EMAIL_SUBSCRIPTION_LABEL }}</h4>
<input type="email" value="" name="EMAIL" class="email" id="mce-EMAIL" placeholder="{{ EMAIL_FIELD_PLACEHOLDER }}" required>
<div class="clear"><input type="submit" value="{{ SUBSCRIBE_BUTTON_TITLE }}" name="subscribe" id="mc-embedded-subscribe" class="button"></div>
</form>
</div>
<!--End mc_embed_signup-->
{% endif %}
</div>
</section>
</div>
</article>
{% endblock content %}
{% block script %}
{{ super() }}
{% endblock script %}

+ 0
- 13
theme/templates/period_archives.html View File

@ -1,13 +0,0 @@
{% extends "base.html" %}
{% block content %}
<section id="content" class="body">
<h1>Archives for {{ period | reverse | join(' ') }}</h1>
<dl>
{% for article in dates %}
<dt>{{ article.locale_date }}</dt>
<dd><a href="{{ SITEURL }}/{{ article.url }}">{{ article.title }}</a></dd>
{% endfor %}
</dl>
</section>
{% endblock %}

+ 48
- 0
theme/templates/search.html View File

@ -0,0 +1,48 @@
{% extends "base.html" %}
{% block title %}
Search · {{ super() }}
{% endblock title %}
{% block head_links %}
{{ super() }}
<link href="http://fonts.googleapis.com/css?family=Lato:300,400|Open+Sans:300,400" rel="stylesheet" type="text/css">
<link rel="stylesheet" type="text/css" href="{{ SITEURL }}/theme/tipuesearch/tipuesearch.css">
{% endblock head_links %}
{% block head_description %}
Search results for {{ SITENAME|striptags }} blog.
{% endblock head_description %}
{% block script %}
<script src="http://ajax.googleapis.com/ajax/libs/jquery/2.0.0/jquery.min.js"></script>
<script type="text/javascript" src="{{ SITEURL }}/theme/tipuesearch/tipuesearch_set.js"></script>
<script type="text/javascript" src="{{ SITEURL }}/theme/tipuesearch/tipuesearch.min.js"></script>
<script>
$(document).ready(function() {
$('#tipue_search_input').tipuesearch({
{% if 'tipue_search' in PLUGINS %}
'mode' : 'json',
{% else %}
'mode': 'live',
{% endif %}
'show': 10,
'newWindow': true,
{# I cannot place following statements in the conditionals above because then Tipue Search fails to work. Possibly a bug in Tipue Search. #}
{% if 'tipue_search' in PLUGINS %}
'contentLocation': '{{ SITEURL }}/tipuesearch_content.json'
{% else %}
'liveDescription': '.article-content'
{% endif %}
});
});
</script>
{% endblock script %}
{% block content %}
<article>
<div class="span8 offset2">
<div id="tipue_search_content"><div id="tipue_search_loading"></div></div>
</div>
</article>
{% endblock content %}

+ 0
- 2
theme/templates/tag.html View File

@ -1,2 +0,0 @@
{% extends "index.html" %}
{% block title %}{{ SITENAME }} - {{ tag }}{% endblock %}

+ 0
- 1
theme/templates/taglist.html View File

@ -1 +0,0 @@
{% if article.tags %}<p>tags: {% for tag in article.tags %}<a href="{{ SITEURL }}/{{ tag.url }}">{{ tag | escape }}</a> {% endfor %}</p>{% endif %}

+ 83
- 10
theme/templates/tags.html View File

@ -1,16 +1,89 @@
{% extends "base.html" %}
{% block title %}{{ SITENAME }} - Tags{% endblock %}
{% block title %}
All Tags · {{ super() }}
{% endblock title %}
{% block head_description %}
All tags used in the {{ SITENAME|striptags }} blog.
{% endblock head_description %}
{% block content %}
<section id="content" class="body">
<h1>Tags for {{ SITENAME }}</h1>
<ul>
{% for tag, articles in tags|sort %}
<li><a href="{{ SITEURL }}/{{ tag.url }}">{{ tag }}</a> ({{ articles|count }})</li>
{% endfor %}
</ul>
</section>
<div class="row-fluid">
<header class="page_header span10 offset2">
<h1><a href="/tags.html">All Tags</a></h1>
</header>
</div>
<div class="row-fluid">
<div class="span8 offset2">
<form class="form-search">
<input type="text" class="input-medium search-query filterinput" placeholder="Find a tag">
</form>
<ul class="list-of-tags">
{% for tag, articles in tags|sort %}
<li>
{% set num = articles|count %}
<a href="/tags.html#{{ tag|replace(' ', '-')|e }}-ref">{{ tag }}<span>{{ num }}</span></a>
</li>
{% endfor %}
</ul>
</div>
</div>
{% endblock %}
<div class="row-fluid">
<div class="span8 offset2">
{% for tag, articles in tags|sort %}
<h2 id="{{ tag|replace(' ', '-')|e }}-ref" class="tag-title">{{ tag }}</h2>
<ul class="articles-in-tag">
{% for article in articles %}
<li><a href="{{ SITEURL }}/{{ article.url }}">{{ article.title }} {%if article.subtitle %} <small> {{ article.subtitle }} </small> {% endif %} </a></li>
{% endfor %}
</ul>
{% endfor %}
</div>
</div>
{% endblock content %}
{% block script %}
{{ super() }}
<script>
(function ($) {
// custom css expression for a case-insensitive contains()
jQuery.expr[':'].Contains = function(a,i,m){
return (a.textContent || a.innerText || "").toUpperCase().indexOf(m[3].toUpperCase())>=0;
};
function listFilter() {
$('.filterinput')
.change( function () {
var filter = $(this).val();
if(filter) {
// this finds all links in a list that contain the input,
// and hide the ones not containing the input while showing the ones that do
$('.list-of-tags').find("a:not(:Contains(" + filter + "))").parent().hide();
$('.list-of-tags').find("a:Contains(" + filter + ")").parent().show();
} else {
$('.list-of-tags').find("li").show();
}
return false;
})
.keyup( function () {
// fire the above change event after every letter
$(this).change();
});
}
//ondomready
$(function () {
listFilter($());
});
}(jQuery));
</script>
{% endblock script %}

+ 0
- 8
theme/templates/translations.html View File

@ -1,8 +0,0 @@
{% macro translations_for(article) %}
{% if article.translations %}
Translations:
{% for translation in article.translations %}
<a href="{{ SITEURL }}/{{ translation.url }}">{{ translation.lang }}</a>
{% endfor %}
{% endif %}
{% endmacro %}

+ 0
- 3
theme/templates/twitter.html View File

@ -1,3 +0,0 @@
{% if TWITTER_USERNAME %}
<a href="https://twitter.com/share" class="twitter-share-button" data-count="horizontal" data-via="{{TWITTER_USERNAME}}">Tweet</a><script type="text/javascript" src="https://platform.twitter.com/widgets.js"></script>
{% endif %}

Loading…
Cancel
Save