[pypy-svn] extradoc extradoc: (antocuni, cfbolz) the blogger template
antocuni
commits-noreply at bitbucket.org
Fri Apr 29 21:08:47 CEST 2011
Author: Antonio Cuni <anto.cuni at gmail.com>
Branch: extradoc
Changeset: r3546:2c848fb97cda
Date: 2011-04-29 21:07 +0200
http://bitbucket.org/pypy/extradoc/changeset/2c848fb97cda/
Log: (antocuni, cfbolz) the blogger template
diff --git a/blog/template.xml b/blog/template.xml
new file mode 100644
--- /dev/null
+++ b/blog/template.xml
@@ -0,0 +1,1768 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+<!-- this template contains two modifications: it adds flattr buttons, and
+adds an image of the logo just before the title -->
+
+<!DOCTYPE html>
+<html b:version='2' class='v2' expr:dir='data:blog.languageDirection' xmlns='http://www.w3.org/1999/xhtml' xmlns:b='http://www.google.com/2005/gml/b' xmlns:data='http://www.google.com/2005/gml/data' xmlns:expr='http://www.google.com/2005/gml/expr'>
+ <head>
+
+ <script type="text/javascript">
+ /* <![CDATA[ */
+ (function() {
+ var s = document.createElement('script'), t = document.getElementsByTagName('script')[0];
+
+ s.type = 'text/javascript';
+ s.async = true;
+ s.src = 'https://api.flattr.com/js/0.6/load.js?mode=manual&uid=cfbolz&category=text&language=en_GB';
+ t.parentNode.insertBefore(s, t);
+ })();
+ function displayFlattrButton(postid, url, tags) {
+ var flattr_tle = document.getElementById("flattr_title_" + postid).innerHTML;
+ if (flattr_tle.length > 80) {
+ flattr_tle = flattr_tle.replace(/(.{0,71}) .*/, "$1 …");
+ flattr_tle = flattr_tle.slice(0,79);
+ }
+ var flattr_dsc = document.getElementById("flattr_summary_" + postid).innerHTML;
+ flattr_dsc = flattr_dsc.replace(/<.*?>/g, "");
+ if (flattr_dsc.length > 980) {
+ flattr_dsc = flattr_dsc.replace(/\n/g, " ");
+ flattr_dsc = flattr_dsc.replace(/(.{0,971}) .*/, "$1 …");
+ flattr_dsc = flattr_dsc.slice(0,979);
+ }
+ if (tags.length > 230) {
+ tags = tags.replace(/(.{0,230}),/, "$1");
+ tags = tags.slice(0,229);
+ }
+ tags = tags + ';';
+
+ document.write('<a class="FlattrButton" style="display:none;" title="' +
+flattr_tle + '" href="' + url + '" rev="flattr;button:compact;tags:' + tags + '">' + flattr_dsc + '</a>');
+ }
+ /* ]]> */
+ </script>
+
+
+ <meta content='IE=EmulateIE7' http-equiv='X-UA-Compatible'/>
+ <b:if cond='data:blog.isMobile'>
+ <meta content='width=device-width,initial-scale=1.0,minimum-scale=1.0,maximum-scale=1.0' name='viewport'/>
+ <b:else/>
+ <meta content='width=1100' name='viewport'/>
+ </b:if>
+ <b:include data='blog' name='all-head-content'/>
+ <title><data:blog.pageTitle/></title>
+
+ <b:skin><![CDATA[/*
+-----------------------------------------------
+Blogger Template Style
+Name: Simple
+Designer: Josh Peterson
+URL: www.noaesthetic.com
+----------------------------------------------- */
+
+/* Variable definitions
+ ====================
+ <Variable name="keycolor" description="Main Color" type="color" default="#66bbdd" value="#66bbdd"/>
+
+ <Group description="Page Text" selector="body">
+ <Variable name="body.font" description="Font" type="font"
+ default="normal normal 12px Arial, Tahoma, Helvetica, FreeSans, sans-serif" value="normal normal 12px Arial, Tahoma, Helvetica, FreeSans, sans-serif"/>
+ <Variable name="body.text.color" description="Text Color" type="color" default="#222222" value="#222222"/>
+ </Group>
+
+ <Group description="Backgrounds" selector=".body-fauxcolumns-outer">
+ <Variable name="body.background.color" description="Outer Background" type="color" default="#66bbdd" value="#66bbdd"/>
+ <Variable name="content.background.color" description="Main Background" type="color" default="#ffffff" value="#ffffff"/>
+ <Variable name="header.background.color" description="Header Background" type="color" default="transparent" value="transparent"/>
+ </Group>
+
+ <Group description="Links" selector=".main-outer">
+ <Variable name="link.color" description="Link Color" type="color" default="#2288bb" value="#2288bb"/>
+ <Variable name="link.visited.color" description="Visited Color" type="color" default="#888888" value="#888888"/>
+ <Variable name="link.hover.color" description="Hover Color" type="color" default="#33aaff" value="#33aaff"/>
+ </Group>
+
+ <Group description="Blog Title" selector=".header h1">
+ <Variable name="header.font" description="Font" type="font"
+ default="normal normal 60px Arial, Tahoma, Helvetica, FreeSans, sans-serif" value="normal normal 60px Arial, Tahoma, Helvetica, FreeSans, sans-serif"/>
+ <Variable name="header.text.color" description="Title Color" type="color" default="#3399bb" value="#3399bb"/>
+ </Group>
+
+ <Group description="Blog Description" selector=".header .description">
+ <Variable name="description.text.color" description="Description Color" type="color"
+ default="#777777" value="#777777"/>
+ </Group>
+
+ <Group description="Tabs Text" selector=".tabs-inner .widget li a">
+ <Variable name="tabs.font" description="Font" type="font"
+ default="normal normal 14px Arial, Tahoma, Helvetica, FreeSans, sans-serif" value="normal normal 14px Arial, Tahoma, Helvetica, FreeSans, sans-serif"/>
+ <Variable name="tabs.text.color" description="Text Color" type="color" default="#999999" value="#999999"/>
+ <Variable name="tabs.selected.text.color" description="Selected Color" type="color" default="#000000" value="#000000"/>
+ </Group>
+
+ <Group description="Tabs Background" selector=".tabs-outer .PageList">
+ <Variable name="tabs.background.color" description="Background Color" type="color" default="#f5f5f5" value="#f5f5f5"/>
+ <Variable name="tabs.selected.background.color" description="Selected Color" type="color" default="#eeeeee" value="#eeeeee"/>
+ </Group>
+
+ <Group description="Post Title" selector="h3.post-title, .comments h4">
+ <Variable name="post.title.font" description="Font" type="font"
+ default="normal normal 22px Arial, Tahoma, Helvetica, FreeSans, sans-serif" value="normal normal 22px Arial, Tahoma, Helvetica, FreeSans, sans-serif"/>
+ </Group>
+
+ <Group description="Date Header" selector=".date-header">
+ <Variable name="date.header.color" description="Text Color" type="color"
+ default="$(body.text.color)" value="$(body.text.color)"/>
+ <Variable name="date.header.background.color" description="Background Color" type="color"
+ default="transparent" value="transparent"/>
+ </Group>
+
+ <Group description="Post Footer" selector=".post-footer">
+ <Variable name="post.footer.text.color" description="Text Color" type="color" default="#666666" value="#666666"/>
+ <Variable name="post.footer.background.color" description="Background Color" type="color"
+ default="#f9f9f9" value="#f9f9f9"/>
+ <Variable name="post.footer.border.color" description="Shadow Color" type="color" default="#eeeeee" value="#eeeeee"/>
+ </Group>
+
+ <Group description="Gadgets" selector="h2">
+ <Variable name="widget.title.font" description="Title Font" type="font"
+ default="normal bold 11px Arial, Tahoma, Helvetica, FreeSans, sans-serif" value="normal bold 11px Arial, Tahoma, Helvetica, FreeSans, sans-serif"/>
+ <Variable name="widget.title.text.color" description="Title Color" type="color" default="#000000" value="#000000"/>
+ <Variable name="widget.alternate.text.color" description="Alternate Color" type="color" default="#999999" value="#999999"/>
+ </Group>
+
+ <Group description="Images" selector=".main-inner">
+ <Variable name="image.background.color" description="Background Color" type="color" default="#ffffff" value="#ffffff"/>
+ <Variable name="image.border.color" description="Border Color" type="color" default="#eeeeee" value="#eeeeee"/>
+ <Variable name="image.text.color" description="Caption Text Color" type="color" default="$(body.text.color)" value="$(body.text.color)"/>
+ </Group>
+
+ <Group description="Accents" selector=".content-inner">
+ <Variable name="body.rule.color" description="Separator Line Color" type="color" default="#eeeeee" value="#eeeeee"/>
+ <Variable name="tabs.border.color" description="Tabs Border Color" type="color" default="$(body.rule.color)" value="$(body.rule.color)"/>
+ </Group>
+
+ <Variable name="body.background" description="Body Background" type="background"
+ color="$(body.background.color)" default="$(color) none repeat scroll top left" value="$(color) none repeat scroll top left"/>
+ <Variable name="body.background.override" description="Body Background Override" type="string" default="" value=""/>
+
+ <Variable name="body.background.gradient.cap" description="Body Gradient Cap" type="url"
+ default="url(http://www.blogblog.com/1kt/simple/gradients_light.png)" value="url(http://www.blogblog.com/1kt/simple/gradients_light.png)"/>
+ <Variable name="body.background.gradient.tile" description="Body Gradient Tile" type="url"
+ default="url(http://www.blogblog.com/1kt/simple/body_gradient_tile_light.png)" value="url(http://www.blogblog.com/1kt/simple/body_gradient_tile_light.png)"/>
+
+ <Variable name="content.background.color.selector" description="Content Background Color Selector" type="string" default=".content-inner" value=".content-inner"/>
+ <Variable name="content.padding" description="Content Padding" type="length" default="10px" value="10px"/>
+ <Variable name="content.padding.horizontal" description="Content Horizontal Padding" type="length" default="$(content.padding)" value="$(content.padding)"/>
+ <Variable name="content.shadow.spread" description="Content Shadow Spread" type="length" default="40px" value="40px"/>
+ <Variable name="content.shadow.spread.webkit" description="Content Shadow Spread (WebKit)" type="length" default="5px" value="5px"/>
+ <Variable name="content.shadow.spread.ie" description="Content Shadow Spread (IE)" type="length" default="10px" value="10px"/>
+
+ <Variable name="main.border.width" description="Main Border Width" type="length" default="0" value="0"/>
+
+ <Variable name="header.background.gradient" description="Header Gradient" type="url" default="none" value="none"/>
+ <Variable name="header.shadow.offset.left" description="Header Shadow Offset Left" type="length" default="-1px" value="-1px"/>
+ <Variable name="header.shadow.offset.top" description="Header Shadow Offset Top" type="length" default="-1px" value="-1px"/>
+ <Variable name="header.shadow.spread" description="Header Shadow Spread" type="length" default="1px" value="1px"/>
+ <Variable name="header.padding" description="Header Padding" type="length" default="30px" value="30px"/>
+
+ <Variable name="header.border.size" description="Header Border Size" type="length" default="1px" value="1px"/>
+ <Variable name="header.bottom.border.size" description="Header Bottom Border Size" type="length" default="$(header.border.size)" value="$(header.border.size)"/>
+ <Variable name="header.border.horizontalsize" description="Header Horizontal Border Size" type="length" default="0" value="0"/>
+
+ <Variable name="description.text.size" description="Description Text Size" type="string" default="140%" value="140%"/>
+
+ <Variable name="tabs.margin.top" description="Tabs Margin Top" type="length" default="0" value="0"/>
+ <Variable name="tabs.margin.side" description="Tabs Side Margin" type="length" default="30px" value="30px"/>
+ <Variable name="tabs.background.gradient" description="Tabs Background Gradient" type="url"
+ default="url(http://www.blogblog.com/1kt/simple/gradients_light.png)" value="url(http://www.blogblog.com/1kt/simple/gradients_light.png)"/>
+ <Variable name="tabs.border.width" description="Tabs Border Width" type="length" default="1px" value="1px"/>
+ <Variable name="tabs.bevel.border.width" description="Tabs Bevel Border Width" type="length" default="1px" value="1px"/>
+
+ <Variable name="date.header.padding" description="Date Header Padding" type="string" default="inherit" value="inherit"/>
+ <Variable name="date.header.letterspacing" description="Date Header Letter Spacing" type="string" default="inherit" value="inherit"/>
+ <Variable name="date.header.margin" description="Date Header Margin" type="string" default="inherit" value="inherit"/>
+
+ <Variable name="post.margin.bottom" description="Post Bottom Margin" type="length" default="25px" value="25px"/>
+
+ <Variable name="image.border.small.size" description="Image Border Small Size" type="length" default="2px" value="2px"/>
+ <Variable name="image.border.large.size" description="Image Border Large Size" type="length" default="5px" value="5px"/>
+
+ <Variable name="page.width.selector" description="Page Width Selector" type="string" default=".region-inner" value=".region-inner"/>
+ <Variable name="page.width" description="Page Width" type="string" default="auto" value="auto"/>
+
+ <Variable name="main.section.margin" description="Main Section Margin" type="length" default="15px" value="15px"/>
+ <Variable name="main.padding" description="Main Padding" type="length" default="15px" value="15px"/>
+ <Variable name="main.padding.top" description="Main Padding Top" type="length" default="30px" value="30px"/>
+ <Variable name="main.padding.bottom" description="Main Padding Bottom" type="length" default="30px" value="30px"/>
+
+ <Variable name="paging.background"
+ color="$(content.background.color)"
+ description="Background of blog paging area" type="background"
+ default="transparent none no-repeat scroll top center" value="transparent none no-repeat scroll top center"/>
+
+ <Variable name="footer.bevel" description="Bevel border length of footer" type="length" default="0" value="0"/>
+
+ <Variable name="startSide" description="Side where text starts in blog language" type="automatic" default="left" value="left"/>
+ <Variable name="endSide" description="Side where text ends in blog language" type="automatic" default="right" value="right"/>
+*/
+
+/* Content
+----------------------------------------------- */
+body {
+ font: $(body.font);
+ color: $(body.text.color);
+ background: $(body.background);
+ padding: 0 $(content.shadow.spread) $(content.shadow.spread) $(content.shadow.spread);
+ $(body.background.override)
+}
+
+html body $(page.width.selector) {
+ min-width: 0;
+ max-width: 100%;
+ width: $(page.width);
+}
+
+a:link {
+ text-decoration:none;
+ color: $(link.color);
+}
+
+a:visited {
+ text-decoration:none;
+ color: $(link.visited.color);
+}
+
+a:hover {
+ text-decoration:underline;
+ color: $(link.hover.color);
+}
+
+.body-fauxcolumn-outer .fauxcolumn-inner {
+ background: transparent $(body.background.gradient.tile) repeat scroll top left;
+ _background-image: none;
+}
+
+.body-fauxcolumn-outer .cap-top {
+ position: absolute;
+ z-index: 1;
+ height: 400px;
+ width: 100%;
+ background: $(body.background);
+ $(body.background.override)
+}
+
+.body-fauxcolumn-outer .cap-top .cap-left {
+ width: 100%;
+ background: transparent $(body.background.gradient.cap) repeat-x scroll top left;
+ _background-image: none;
+}
+
+.content-outer {
+ -moz-box-shadow: 0 0 $(content.shadow.spread) rgba(0, 0, 0, .15);
+ -webkit-box-shadow: 0 0 $(content.shadow.spread.webkit) rgba(0, 0, 0, .15);
+ -goog-ms-box-shadow: 0 0 $(content.shadow.spread.ie) #333333;
+ box-shadow: 0 0 $(content.shadow.spread) rgba(0, 0, 0, .15);
+
+ margin-bottom: 1px;
+}
+
+.content-inner {
+ padding: $(content.padding) $(content.padding.horizontal);
+}
+
+$(content.background.color.selector) {
+ background-color: $(content.background.color);
+}
+
+/* Header
+----------------------------------------------- */
+.header-outer {
+ background: $(header.background.color) $(header.background.gradient) repeat-x scroll 0 -400px;
+ _background-image: none;
+}
+
+.Header h1 {
+ font: $(header.font);
+ color: $(header.text.color);
+ text-shadow: $(header.shadow.offset.left) $(header.shadow.offset.top) $(header.shadow.spread) rgba(0, 0, 0, .2);
+}
+
+.Header h1 a {
+ color: $(header.text.color);
+}
+
+.Header .description {
+ font-size: $(description.text.size);
+ color: $(description.text.color);
+}
+
+.header-inner .Header .titlewrapper {
+ padding: 22px $(header.padding);
+}
+
+.header-inner .Header .descriptionwrapper {
+ padding: 0 $(header.padding);
+}
+
+/* Tabs
+----------------------------------------------- */
+.tabs-inner .section:first-child {
+ border-top: $(header.bottom.border.size) solid $(tabs.border.color);
+}
+
+.tabs-inner .section:first-child ul {
+ margin-top: -$(header.border.size);
+ border-top: $(header.border.size) solid $(tabs.border.color);
+ border-left: $(header.border.horizontalsize) solid $(tabs.border.color);
+ border-right: $(header.border.horizontalsize) solid $(tabs.border.color);
+}
+
+.tabs-inner .widget ul {
+ background: $(tabs.background.color) $(tabs.background.gradient) repeat-x scroll 0 -800px;
+ _background-image: none;
+ border-bottom: $(tabs.border.width) solid $(tabs.border.color);
+
+ margin-top: $(tabs.margin.top);
+ margin-left: -$(tabs.margin.side);
+ margin-right: -$(tabs.margin.side);
+}
+
+.tabs-inner .widget li a {
+ display: inline-block;
+
+ padding: .6em 1em;
+
+ font: $(tabs.font);
+ color: $(tabs.text.color);
+
+ border-$startSide: $(tabs.border.width) solid $(content.background.color);
+ border-$endSide: $(tabs.bevel.border.width) solid $(tabs.border.color);
+}
+
+.tabs-inner .widget li:first-child a {
+ border-$startSide: none;
+}
+
+.tabs-inner .widget li.selected a, .tabs-inner .widget li a:hover {
+ color: $(tabs.selected.text.color);
+ background-color: $(tabs.selected.background.color);
+ text-decoration: none;
+}
+
+/* Columns
+----------------------------------------------- */
+.main-outer {
+ border-top: $(main.border.width) solid $(body.rule.color);
+}
+
+.fauxcolumn-left-outer .fauxcolumn-inner {
+ border-right: 1px solid $(body.rule.color);
+}
+
+.fauxcolumn-right-outer .fauxcolumn-inner {
+ border-left: 1px solid $(body.rule.color);
+}
+
+/* Headings
+----------------------------------------------- */
+h2 {
+ margin: 0 0 1em 0;
+
+ font: $(widget.title.font);
+ color: $(widget.title.text.color);
+ text-transform: uppercase;
+}
+
+/* Widgets
+----------------------------------------------- */
+.widget .zippy {
+ color: $(widget.alternate.text.color);
+ text-shadow: 2px 2px 1px rgba(0, 0, 0, .1);
+}
+
+.widget .popular-posts ul {
+ list-style: none;
+}
+
+/* Posts
+----------------------------------------------- */
+.date-header span {
+ background-color: $(date.header.background.color);
+ color: $(date.header.color);
+ padding: $(date.header.padding);
+ letter-spacing: $(date.header.letterspacing);
+ margin: $(date.header.margin);
+}
+
+.main-inner {
+ padding-top: $(main.padding.top);
+ padding-bottom: $(main.padding.bottom);
+}
+
+.main-inner .column-center-inner {
+ padding: 0 $(main.padding);
+}
+
+.main-inner .column-center-inner .section {
+ margin: 0 $(main.section.margin);
+}
+
+.post {
+ margin: 0 0 $(post.margin.bottom) 0;
+}
+
+h3.post-title, .comments h4 {
+ font: $(post.title.font);
+ margin: .75em 0 0;
+}
+
+.post-body {
+ font-size: 110%;
+ line-height: 1.4;
+ position: relative;
+}
+
+.post-body img, .post-body .tr-caption-container, .Profile img, .Image img,
+.BlogList .item-thumbnail img {
+ padding: $(image.border.small.size);
+
+ background: $(image.background.color);
+ border: 1px solid $(image.border.color);
+
+ -moz-box-shadow: 1px 1px 5px rgba(0, 0, 0, .1);
+ -webkit-box-shadow: 1px 1px 5px rgba(0, 0, 0, .1);
+ box-shadow: 1px 1px 5px rgba(0, 0, 0, .1);
+}
+
+.post-body img, .post-body .tr-caption-container {
+ padding: $(image.border.large.size);
+}
+
+.post-body .tr-caption-container {
+ color: $(image.text.color);
+}
+
+.post-body .tr-caption-container img {
+ padding: 0;
+
+ background: transparent;
+ border: none;
+
+ -moz-box-shadow: 0 0 0 rgba(0, 0, 0, .1);
+ -webkit-box-shadow: 0 0 0 rgba(0, 0, 0, .1);
+ box-shadow: 0 0 0 rgba(0, 0, 0, .1);
+}
+
+.post-header {
+ margin: 0 0 1.5em;
+
+ line-height: 1.6;
+ font-size: 90%;
+}
+
+.post-footer {
+ margin: 20px -2px 0;
+ padding: 5px 10px;
+
+ color: $(post.footer.text.color);
+ background-color: $(post.footer.background.color);
+ border-bottom: 1px solid $(post.footer.border.color);
+
+ line-height: 1.6;
+ font-size: 90%;
+}
+
+#comments .comment-author {
+ padding-top: 1.5em;
+
+ border-top: 1px solid $(body.rule.color);
+ background-position: 0 1.5em;
+}
+
+#comments .comment-author:first-child {
+ padding-top: 0;
+
+ border-top: none;
+}
+
+.avatar-image-container {
+ margin: .2em 0 0;
+}
+
+#comments .avatar-image-container img {
+ border: 1px solid $(image.border.color);
+}
+
+/* Accents
+---------------------------------------------- */
+.section-columns td.columns-cell {
+ border-$startSide: 1px solid $(body.rule.color);
+}
+
+.blog-pager {
+ background: $(paging.background);
+}
+
+.blog-pager-older-link, .home-link,
+.blog-pager-newer-link {
+ background-color: $(content.background.color);
+ padding: 5px;
+}
+
+.footer-outer {
+ border-top: $(footer.bevel) dashed #bbbbbb;
+}
+
+/* Mobile
+----------------------------------------------- */
+.mobile .content-outer {
+ -webkit-box-shadow: 0 0 3px rgba(0, 0, 0, .15);
+ box-shadow: 0 0 3px rgba(0, 0, 0, .15);
+ padding: 0 $(content.shadow.spread);
+}
+
+body.mobile .AdSense {
+ margin-left: -$(content.shadow.spread);
+}
+
+.mobile .tabs-inner .widget ul {
+ margin-left: 0;
+ margin-right: 0;
+}
+
+.mobile .post {
+ margin: 0;
+}
+
+.mobile .main-inner .column-center-inner .section {
+ margin: 0;
+}
+
+.mobile .date-header span {
+ padding: 0.4em 10px;
+ margin: 0 -10px;
+}
+
+.mobile h3.post-title {
+ margin: 0;
+}
+
+.mobile .blog-pager {
+ background: transparent;
+}
+
+.mobile .footer-outer {
+ border-top: none;
+}
+
+.mobile .main-inner, .mobile .footer-inner {
+ background-color: $(content.background.color);
+}
+
+.mobile-index-contents {
+ color: $(body.text.color);
+}
+
+.mobile-link-button {
+ background-color: $(link.color);
+}
+
+.mobile-link-button a:link, .mobile-link-button a:visited {
+ color: $(content.background.color);
+}
+]]></b:skin>
+
+ <b:template-skin>
+ <b:variable default='930px' name='content.width' type='length' value='930px'/>
+ <b:variable default='0' name='main.column.left.width' type='length' value='250px'/>
+ <b:variable default='360px' name='main.column.right.width' type='length' value='0px'/>
+
+ <![CDATA[
+ body {
+ min-width: $(content.width);
+ }
+
+ .content-outer, .content-fauxcolumn-outer, .region-inner {
+ min-width: $(content.width);
+ max-width: $(content.width);
+ _width: $(content.width);
+ }
+
+ .main-inner .columns {
+ padding-left: $(main.column.left.width);
+ padding-right: $(main.column.right.width);
+ }
+
+ .main-inner .fauxcolumn-center-outer {
+ left: $(main.column.left.width);
+ right: $(main.column.right.width);
+ /* IE6 does not respect left and right together */
+ _width: expression(this.parentNode.offsetWidth -
+ parseInt("$(main.column.left.width)") -
+ parseInt("$(main.column.right.width)") + 'px');
+ }
+
+ .main-inner .fauxcolumn-left-outer {
+ width: $(main.column.left.width);
+ }
+
+ .main-inner .fauxcolumn-right-outer {
+ width: $(main.column.right.width);
+ }
+
+ .main-inner .column-left-outer {
+ width: $(main.column.left.width);
+ right: 100%;
+ margin-left: -$(main.column.left.width);
+ }
+
+ .main-inner .column-right-outer {
+ width: $(main.column.right.width);
+ margin-right: -$(main.column.right.width);
+ }
+
+ #layout {
+ min-width: 0;
+ }
+
+ #layout .content-outer {
+ min-width: 0;
+ width: 800px;
+ }
+
+ #layout .region-inner {
+ min-width: 0;
+ width: auto;
+ }
+ ]]>
+ </b:template-skin>
+ </head>
+
+
+
+ <body expr:class='"loading" + data:blog.mobileClass'>
+ <div class='body-fauxcolumns'>
+ <div class='fauxcolumn-outer body-fauxcolumn-outer'>
+ <div class='cap-top'>
+ <div class='cap-left'/>
+ <div class='cap-right'/>
+ </div>
+ <div class='fauxborder-left'>
+ <div class='fauxborder-right'/>
+ <div class='fauxcolumn-inner'>
+ </div>
+ </div>
+ <div class='cap-bottom'>
+ <div class='cap-left'/>
+ <div class='cap-right'/>
+ </div>
+ </div>
+ </div>
+
+ <div class='content'>
+ <div class='content-fauxcolumns'>
+ <div class='fauxcolumn-outer content-fauxcolumn-outer'>
+ <div class='cap-top'>
+ <div class='cap-left'/>
+ <div class='cap-right'/>
+ </div>
+ <div class='fauxborder-left'>
+ <div class='fauxborder-right'/>
+ <div class='fauxcolumn-inner'>
+ </div>
+ </div>
+ <div class='cap-bottom'>
+ <div class='cap-left'/>
+ <div class='cap-right'/>
+ </div>
+ </div>
+ </div>
+
+ <div class='content-outer'>
+ <div class='content-cap-top cap-top'>
+ <div class='cap-left'/>
+ <div class='cap-right'/>
+ </div>
+ <div class='fauxborder-left content-fauxborder-left'>
+ <div class='fauxborder-right content-fauxborder-right'/>
+ <div class='content-inner'>
+
+ <header>
+ <div class='header-outer'>
+ <div class='header-cap-top cap-top'>
+ <div class='cap-left'>
+<img src='http://2.bp.blogspot.com/-iO_dZU_FAR0/Tbre-StkIhI/AAAAAAAAAM4/m3P9wi1e-ng/s150/pypy_small128.png'/>
+</div>
+ <div class='cap-right'/>
+ </div>
+ <div class='fauxborder-left header-fauxborder-left'>
+ <div class='fauxborder-right header-fauxborder-right'/>
+ <div class='region-inner header-inner' style='margin-left: 128px'>
+ <b:section class='header' id='header' maxwidgets='2' showaddelement='no'>
+<b:widget id='Header1' locked='false' title='PyPy Status Blog (Header)' type='Header'>
+<b:includable id='main'>
+
+ <b:if cond='data:useImage'>
+ <b:if cond='data:imagePlacement == "BEHIND"'>
+ <!--
+ Show image as background to text. You can't really calculate the width
+ reliably in JS because margins are not taken into account by any of
+ clientWidth, offsetWidth or scrollWidth, so we don't force a minimum
+ width if the user is using shrink to fit.
+ This results in a margin-width's worth of pixels being cropped. If the
+ user is not using shrink to fit then we expand the header.
+ -->
+ <b:if cond='data:mobile'>
+ <div id='header-inner'>
+ <div class='titlewrapper' style='background: transparent'>
+ <h1 class='title' style='background: transparent; border-width: 0px'>
+ <b:include name='title'/>
+ </h1>
+ </div>
+ <b:include name='description'/>
+ </div>
+ <b:else/>
+ <div expr:style='"background-image: url(\"" + data:sourceUrl + "\"); " + "background-position: " + data:backgroundPositionStyleStr + "; " + data:widthStyleStr + "min-height: " + data:height + "_height: " + data:height + "background-repeat: no-repeat; "' id='header-inner'>
+ <div class='titlewrapper' style='background: transparent'>
+ <h1 class='title' style='background: transparent; border-width: 0px'>
+ <b:include name='title'/>
+ </h1>
+ </div>
+ <b:include name='description'/>
+ </div>
+ </b:if>
+ <b:else/>
+ <!--Show the image only-->
+ <div id='header-inner'>
+ <a expr:href='data:blog.homepageUrl' style='display: block'>
+ <img expr:alt='data:title' expr:height='data:height' expr:id='data:widget.instanceId + "_headerimg"' expr:src='data:sourceUrl' expr:width='data:width' style='display: block'/>
+ </a>
+ <!--Show the description-->
+ <b:if cond='data:imagePlacement == "BEFORE_DESCRIPTION"'>
+ <b:include name='description'/>
+ </b:if>
+ </div>
+ </b:if>
+ <b:else/>
+ <!--No header image -->
+ <div id='header-inner'>
+ <div class='titlewrapper'>
+ <h1 class='title'>
+ <b:include name='title'/>
+ </h1>
+ </div>
+ <b:include name='description'/>
+ </div>
+ </b:if>
+</b:includable>
+<b:includable id='title'>
+ <b:if cond='data:blog.url == data:blog.homepageUrl'>
+ <data:title/>
+ <b:else/>
+ <a expr:href='data:blog.homepageUrl'><data:title/></a>
+ </b:if>
+</b:includable>
+<b:includable id='description'>
+ <div class='descriptionwrapper'>
+ <p class='description'><span><data:description/></span></p>
+ </div>
+</b:includable>
+</b:widget>
+</b:section>
+ </div>
+ </div>
+ <div class='header-cap-bottom cap-bottom'>
+ <div class='cap-left'/>
+ <div class='cap-right'/>
+ </div>
+ </div>
+ </header>
+
+ <div class='tabs-outer'>
+ <div class='tabs-cap-top cap-top'>
+ <div class='cap-left'/>
+ <div class='cap-right'/>
+ </div>
+ <div class='fauxborder-left tabs-fauxborder-left'>
+ <div class='fauxborder-right tabs-fauxborder-right'/>
+ <div class='region-inner tabs-inner'>
+ <b:section class='tabs' id='crosscol' maxwidgets='1' showaddelement='yes'/>
+ <b:section class='tabs' id='crosscol-overflow' showaddelement='no'/>
+ </div>
+ </div>
+ <div class='tabs-cap-bottom cap-bottom'>
+ <div class='cap-left'/>
+ <div class='cap-right'/>
+ </div>
+ </div>
+
+ <div class='main-outer'>
+ <div class='main-cap-top cap-top'>
+ <div class='cap-left'/>
+ <div class='cap-right'/>
+ </div>
+
+ <div class='fauxborder-left main-fauxborder-left'>
+ <div class='fauxborder-right main-fauxborder-right'/>
+ <div class='region-inner main-inner'>
+
+ <div class='columns fauxcolumns'>
+
+ <div class='fauxcolumn-outer fauxcolumn-center-outer'>
+ <div class='cap-top'>
+ <div class='cap-left'/>
+ <div class='cap-right'/>
+ </div>
+ <div class='fauxborder-left'>
+ <div class='fauxborder-right'/>
+ <div class='fauxcolumn-inner'>
+ </div>
+ </div>
+ <div class='cap-bottom'>
+ <div class='cap-left'/>
+ <div class='cap-right'/>
+ </div>
+ </div>
+
+ <div class='fauxcolumn-outer fauxcolumn-left-outer'>
+ <div class='cap-top'>
+ <div class='cap-left'/>
+ <div class='cap-right'/>
+ </div>
+ <div class='fauxborder-left'>
+ <div class='fauxborder-right'/>
+ <div class='fauxcolumn-inner'>
+ </div>
+ </div>
+ <div class='cap-bottom'>
+ <div class='cap-left'/>
+ <div class='cap-right'/>
+ </div>
+ </div>
+
+ <div class='fauxcolumn-outer fauxcolumn-right-outer'>
+ <div class='cap-top'>
+ <div class='cap-left'/>
+ <div class='cap-right'/>
+ </div>
+ <div class='fauxborder-left'>
+ <div class='fauxborder-right'/>
+ <div class='fauxcolumn-inner'>
+ </div>
+ </div>
+ <div class='cap-bottom'>
+ <div class='cap-left'/>
+ <div class='cap-right'/>
+ </div>
+ </div>
+
+ <!-- corrects IE6 width calculation -->
+ <div class='columns-inner'>
+
+ <div class='column-center-outer'>
+ <div class='column-center-inner'>
+ <b:section class='main' id='main' showaddelement='no'>
+<b:widget id='Blog1' locked='false' title='Blog Posts' type='Blog'>
+<b:includable id='nextprev'>
+ <div class='blog-pager' id='blog-pager'>
+ <b:if cond='data:newerPageUrl'>
+ <span id='blog-pager-newer-link'>
+ <a class='blog-pager-newer-link' expr:href='data:newerPageUrl' expr:id='data:widget.instanceId + "_blog-pager-newer-link"' expr:title='data:newerPageTitle'><data:newerPageTitle/></a>
+ </span>
+ </b:if>
+
+ <b:if cond='data:olderPageUrl'>
+ <span id='blog-pager-older-link'>
+ <a class='blog-pager-older-link' expr:href='data:olderPageUrl' expr:id='data:widget.instanceId + "_blog-pager-older-link"' expr:title='data:olderPageTitle'><data:olderPageTitle/></a>
+ </span>
+ </b:if>
+
+ <a class='home-link' expr:href='data:blog.homepageUrl'><data:homeMsg/></a>
+
+ <b:if cond='data:mobileLinkUrl'>
+ <div class='blog-mobile-link'>
+ <a expr:href='data:mobileLinkUrl'><data:mobileLinkMsg/></a>
+ </div>
+ </b:if>
+
+ </div>
+ <div class='clear'/>
+</b:includable>
+<b:includable id='shareButtons' var='post'>
+ <b:if cond='data:top.showEmailButton'><a class='goog-inline-block share-button sb-email' expr:href='data:post.sharePostUrl + "&target=email"' expr:title='data:top.emailThisMsg' target='_blank'>
+ <span class='share-button-link-text'><data:top.emailThisMsg/></span>
+ </a></b:if><b:if cond='data:top.showBlogThisButton'><a class='goog-inline-block share-button sb-blog' expr:href='data:post.sharePostUrl + "&target=blog"' expr:onclick='"window.open(this.href, \"_blank\", \"height=270,width=475\"); return false;"' expr:title='data:top.blogThisMsg' target='_blank'>
+ <span class='share-button-link-text'><data:top.blogThisMsg/></span>
+ </a></b:if><b:if cond='data:top.showTwitterButton'><a class='goog-inline-block share-button sb-twitter' expr:href='data:post.sharePostUrl + "&target=twitter"' expr:title='data:top.shareToTwitterMsg' target='_blank'>
+ <span class='share-button-link-text'><data:top.shareToTwitterMsg/></span>
+ </a></b:if><b:if cond='data:top.showFacebookButton'><a class='goog-inline-block share-button sb-facebook' expr:href='data:post.sharePostUrl + "&target=facebook"' expr:onclick='"window.open(this.href, \"_blank\", \"height=430,width=640\"); return false;"' expr:title='data:top.shareToFacebookMsg' target='_blank'>
+ <span class='share-button-link-text'><data:top.shareToFacebookMsg/></span>
+ </a></b:if><b:if cond='data:top.showOrkutButton'><a class='goog-inline-block share-button sb-orkut' expr:href='data:post.sharePostUrl + "&target=orkut"' expr:title='data:top.shareToOrkutMsg' target='_blank'>
+ <span class='share-button-link-text'><data:top.shareToOrkutMsg/></span>
+ </a></b:if><b:if cond='data:top.showBuzzButton'><a class='goog-inline-block share-button sb-buzz' expr:href='data:post.sharePostUrl + "&target=buzz"' expr:onclick='"window.open(this.href, \"_blank\", \"height=415,width=690\"); return false;"' expr:title='data:top.shareToBuzzMsg' target='_blank'>
+ <span class='share-button-link-text'><data:top.shareToBuzzMsg/></span>
+ </a></b:if>
+ <b:if cond='data:top.showDummy'>
+ <div class='goog-inline-block dummy-container'><data:post.dummyTag/></div>
+ </b:if>
+</b:includable>
+<b:includable id='backlinks' var='post'>
+ <a name='links'/><h4><data:post.backlinksLabel/></h4>
+ <b:if cond='data:post.numBacklinks != 0'>
+ <dl class='comments-block' id='comments-block'>
+ <b:loop values='data:post.backlinks' var='backlink'>
+ <div class='collapsed-backlink backlink-control'>
+ <dt class='comment-title'>
+ <span class='backlink-toggle-zippy'> </span>
+ <a expr:href='data:backlink.url' rel='nofollow'><data:backlink.title/></a>
+ <b:include data='backlink' name='backlinkDeleteIcon'/>
+ </dt>
+ <dd class='comment-body collapseable'>
+ <data:backlink.snippet/>
+ </dd>
+ <dd class='comment-footer collapseable'>
+ <span class='comment-author'><data:post.authorLabel/> <data:backlink.author/></span>
+ <span class='comment-timestamp'><data:post.timestampLabel/> <data:backlink.timestamp/></span>
+ </dd>
+ </div>
+ </b:loop>
+ </dl>
+ </b:if>
+ <p class='comment-footer'>
+ <a class='comment-link' expr:href='data:post.createLinkUrl' expr:id='data:widget.instanceId + "_backlinks-create-link"' target='_blank'><data:post.createLinkLabel/></a>
+ </p>
+</b:includable>
+<b:includable id='post' var='post'>
+ <div class='post hentry'>
+ <a expr:name='data:post.id'/>
+ <b:if cond='data:post.title'>
+ <h3 class='post-title entry-title'>
+ <b:if cond='data:post.link'>
+ <a expr:href='data:post.link'><data:post.title/></a>
+ <b:else/>
+ <b:if cond='data:post.url'>
+ <b:if cond='data:blog.url != data:post.url'>
+ <a expr:href='data:post.url'><data:post.title/></a>
+ <b:else/>
+ <data:post.title/>
+ </b:if>
+ <b:else/>
+ <data:post.title/>
+ </b:if>
+ </b:if>
+ </h3>
+ </b:if>
+
+ <div class='post-header'>
+ <div class='post-header-line-1'/>
+ </div>
+
+ <div class='post-body entry-content' expr:id='"post-body-" + data:post.id'>
+ <data:post.body/>
+ <div style='clear: both;'/> <!-- clear for photos floats -->
+ </div>
+
+ <b:if cond='data:post.hasJumpLink'>
+ <div class='jump-link'>
+ <a expr:href='data:post.url + "#more"' expr:title='data:post.title'><data:post.jumpText/></a>
+ </div>
+ </b:if>
+
+ <div class='post-footer'>
+ <div class='post-footer-line post-footer-line-1'><span class='post-author vcard'>
+
+ <!-- BEGIN of FLATTR CODE -->
+ <div expr:id='"flattr_summary_" + data:post.id' style='display: none;'>
+ <data:post.body/>
+ </div>
+ <div expr:id='"flattr_title_" + data:post.id' style='display: none;'>
+ <data:post.title/>
+ </div>
+
+ <!-- <span style='float:left; margin:5px;'> -->
+ <div class="post-share-buttons goog-inline-block">
+ <script type='text/javascript'>
+ displayFlattrButton('<data:post.id/>', '<data:post.url/>', '<b:if cond='data:post.labels'><b:loop values='data:post.labels' var='label'><data:label.name/><b:if cond='data:label.isLast != "true"'>,</b:if></b:loop></b:if>');
+ </script>
+ </div>
+ <!-- </span> -->
+ <!-- END of FLATTR CODE -->
+
+ <b:if cond='data:top.showAuthor'>
+ <data:top.authorLabel/>
+ <span class='fn'><data:post.author/></span>
+ </b:if>
+ </span> <span class='post-timestamp'>
+ <b:if cond='data:top.showTimestamp'>
+ <data:top.timestampLabel/>
+ <b:if cond='data:post.url'>
+ <a class='timestamp-link' expr:href='data:post.url' rel='bookmark' title='permanent link'><abbr class='published' expr:title='data:post.timestampISO8601'><data:post.timestamp/></abbr></a>
+ </b:if>
+ </b:if>
+ </span> <span class='post-comment-link'>
+ <b:if cond='data:blog.pageType != "item"'>
+ <b:if cond='data:blog.pageType != "static_page"'>
+ <b:if cond='data:post.allowComments'>
+ <a class='comment-link' expr:href='data:post.addCommentUrl' expr:onclick='data:post.addCommentOnclick'><b:if cond='data:post.numComments == 1'>1 <data:top.commentLabel/><b:else/><data:post.numComments/> <data:top.commentLabelPlural/></b:if></a>
+ </b:if>
+ </b:if>
+ </b:if>
+ </span> <span class='post-icons'>
+ <!-- email post links -->
+ <b:if cond='data:post.emailPostUrl'>
+ <span class='item-action'>
+ <a expr:href='data:post.emailPostUrl' expr:title='data:top.emailPostMsg'>
+ <img alt='' class='icon-action' height='13' src='http://img1.blogblog.com/img/icon18_email.gif' width='18'/>
+ </a>
+ </span>
+ </b:if>
+
+ <!-- quickedit pencil -->
+ <b:include data='post' name='postQuickEdit'/>
+ </span> <div class='post-share-buttons goog-inline-block'>
+ <b:if cond='data:post.sharePostUrl'>
+ <b:include data='post' name='shareButtons'/>
+ </b:if>
+ </div> </div>
+
+ <div class='post-footer-line post-footer-line-2'><span class='post-labels'>
+ <b:if cond='data:post.labels'>
+ <data:postLabelsLabel/>
+ <b:loop values='data:post.labels' var='label'>
+ <a expr:href='data:label.url' rel='tag'><data:label.name/></a><b:if cond='data:label.isLast != "true"'>,</b:if>
+ </b:loop>
+ </b:if>
+ </span> </div>
+
+ <div class='post-footer-line post-footer-line-3'><span class='post-backlinks post-comment-link'>
+ <b:if cond='data:blog.pageType != "item"'>
+ <b:if cond='data:blog.pageType != "static_page"'>
+ <b:if cond='data:post.showBacklinks'>
+ <a class='comment-link' expr:href='data:post.url + "#links"'><data:top.backlinkLabel/></a>
+ </b:if>
+ </b:if>
+ </b:if>
+ </span> </div>
+ </div>
+ </div>
+</b:includable>
+<b:includable id='status-message'>
+ <b:if cond='data:navMessage'>
+ <div class='status-msg-wrap'>
+ <div class='status-msg-body'>
+ <data:navMessage/>
+ </div>
+ <div class='status-msg-border'>
+ <div class='status-msg-bg'>
+ <div class='status-msg-hidden'><data:navMessage/></div>
+ </div>
+ </div>
+ </div>
+ <div style='clear: both;'/>
+ </b:if>
+</b:includable>
+<b:includable id='comment-form' var='post'>
+ <div class='comment-form'>
+ <a name='comment-form'/>
+ <b:if cond='data:mobile'>
+ <h4 id='comment-post-message'>
+ <a expr:id='data:widget.instanceId + "_comment-editor-toggle-link"' href='javascript:void(0)'><data:postCommentMsg/></a></h4>
+ <p><data:blogCommentMessage/></p>
+ <data:blogTeamBlogMessage/>
+ <a expr:href='data:post.commentFormIframeSrc' id='comment-editor-src'/>
+ <iframe allowtransparency='true' class='blogger-iframe-colorize blogger-comment-from-post' frameborder='0' height='410' id='comment-editor' name='comment-editor' src='' style='display: none' width='100%'/>
+ <b:else/>
+ <h4 id='comment-post-message'><data:postCommentMsg/></h4>
+ <p><data:blogCommentMessage/></p>
+ <data:blogTeamBlogMessage/>
+ <a expr:href='data:post.commentFormIframeSrc' id='comment-editor-src'/>
+ <iframe allowtransparency='true' class='blogger-iframe-colorize blogger-comment-from-post' frameborder='0' height='410' id='comment-editor' name='comment-editor' src='' width='100%'/>
+ </b:if>
+ <data:post.friendConnectJs/>
+ <data:post.cmtfpIframe/>
+ <script type='text/javascript'>
+ BLOG_CMT_createIframe('<data:post.appRpcRelayPath/>', '<data:post.communityId/>');
+ </script>
+ </div>
+</b:includable>
+<b:includable id='backlinkDeleteIcon' var='backlink'>
+ <span expr:class='"item-control " + data:backlink.adminClass'>
+ <a expr:href='data:backlink.deleteUrl' expr:title='data:top.deleteBacklinkMsg'>
+ <img src='//www.blogger.com/img/icon_delete13.gif'/>
+ </a>
+ </span>
+</b:includable>
+<b:includable id='mobile-nextprev'>
+ <div class='blog-pager' id='blog-pager'>
+ <b:if cond='data:newerPageUrl'>
+ <div class='mobile-link-button' id='blog-pager-newer-link'>
+ <a class='blog-pager-newer-link' expr:href='data:newerPageUrl' expr:id='data:widget.instanceId + "_blog-pager-newer-link"' expr:title='data:newerPageTitle'>&laquo;</a>
+ </div>
+ </b:if>
+
+ <b:if cond='data:olderPageUrl'>
+ <div class='mobile-link-button' id='blog-pager-older-link'>
+ <a class='blog-pager-older-link' expr:href='data:olderPageUrl' expr:id='data:widget.instanceId + "_blog-pager-older-link"' expr:title='data:olderPageTitle'>&raquo;</a>
+ </div>
+ </b:if>
+
+ <div class='mobile-link-button' id='blog-pager-home-link'>
+ <a class='home-link' expr:href='data:blog.homepageUrl'><data:homeMsg/></a>
+ </div>
+
+ <div class='mobile-desktop-link'>
+ <a class='home-link' expr:href='data:desktopLinkUrl'><data:desktopLinkMsg/></a>
+ </div>
+
+ </div>
+ <div class='clear'/>
+</b:includable>
+<b:includable id='postQuickEdit' var='post'>
+ <b:if cond='data:post.editUrl'>
+ <span expr:class='"item-control " + data:post.adminClass'>
+ <a expr:href='data:post.editUrl' expr:title='data:top.editPostMsg'>
+ <img alt='' class='icon-action' height='18' src='http://img2.blogblog.com/img/icon18_edit_allbkg.gif' width='18'/>
+ </a>
+ </span>
+ </b:if>
+</b:includable>
+<b:includable id='main' var='top'>
+
+ <b:if cond='data:top.showDummy'>
+ <data:top.dummyBootstrap/>
+ </b:if>
+
+ <b:if cond='data:mobileindex'>
+ <!-- mobile index -->
+ <div class='blog-posts hfeed'>
+ <b:loop values='data:posts' var='post'>
+ <b:if cond='data:post.isFirstPost == "false"'>
+ </div>
+ </b:if>
+ <div class="mobile-date-outer date-outer">
+ <b:include data='post' name='mobile-index-post'/>
+ <b:if cond='data:post.trackLatency'>
+ <data:post.latencyJs/>
+ </b:if>
+ </b:loop>
+ <b:if cond='data:numPosts != 0'>
+ </div>
+ </b:if>
+ </div>
+ <b:else/>
+
+ <!-- posts -->
+ <div class='blog-posts hfeed'>
+
+ <b:include data='top' name='status-message'/>
+
+ <data:defaultAdStart/>
+ <b:loop values='data:posts' var='post'>
+ <b:if cond='data:post.isDateStart'>
+ <b:if cond='data:post.isFirstPost == "false"'>
+ </div></div>
+ </b:if>
+ </b:if>
+ <b:if cond='data:post.isDateStart'>
+ <div class="date-outer">
+ </b:if>
+ <b:if cond='data:post.dateHeader'>
+ <h2 class='date-header'><span><data:post.dateHeader/></span></h2>
+ </b:if>
+ <b:if cond='data:post.isDateStart'>
+ <div class="date-posts">
+ </b:if>
+ <div class='post-outer'>
+ <b:include data='post' name='post'/>
+ <b:if cond='data:blog.pageType == "static_page"'>
+ <b:include data='post' name='comments'/>
+ </b:if>
+ <b:if cond='data:blog.pageType == "item"'>
+ <b:include data='post' name='comments'/>
+ </b:if>
+ </div>
+ <b:if cond='data:post.includeAd'>
+ <b:if cond='data:post.isFirstPost'>
+ <data:defaultAdEnd/>
+ <b:else/>
+ <data:adEnd/>
+ </b:if>
+ <b:if cond='data:mobile == "false"'>
+ <div class='inline-ad'>
+ <data:adCode/>
+ </div>
+ </b:if>
+ <data:adStart/>
+ </b:if>
+ <b:if cond='data:post.trackLatency'>
+ <data:post.latencyJs/>
+ </b:if>
+ </b:loop>
+ <b:if cond='data:numPosts != 0'>
+ </div></div>
+ </b:if>
+ <data:adEnd/>
+ </div>
+ </b:if>
+
+ <!-- navigation -->
+ <b:if cond='data:mobile'>
+ <b:include name='mobile-nextprev'/>
+ <b:else/>
+ <b:include name='nextprev'/>
+
+ <!-- feed links -->
+ <b:include name='feedLinks'/>
+ </b:if>
+
+ <b:if cond='data:top.showStars'>
+ <script src='//www.google.com/jsapi' type='text/javascript'/>
+ <script type='text/javascript'>
+ google.load("annotations", "1", {"locale": "<data:top.languageCode/>"});
+ function initialize() {
+ google.annotations.setApplicationId(<data:top.blogspotReviews/>);
+ google.annotations.createAll();
+ google.annotations.fetch();
+ }
+ google.setOnLoadCallback(initialize);
+ </script>
+ </b:if>
+</b:includable>
+<b:includable id='commentDeleteIcon' var='comment'>
+ <span expr:class='"item-control " + data:comment.adminClass'>
+ <b:if cond='data:showCmtPopup'>
+ <div class='goog-toggle-button'>
+ <div class='goog-inline-block comment-action-icon'/>
+ </div>
+ <b:else/>
+ <a class='comment-delete' expr:href='data:comment.deleteUrl' expr:title='data:top.deleteCommentMsg'>
+ <img src='//www.blogger.com/img/icon_delete13.gif'/>
+ </a>
+ </b:if>
+ </span>
+</b:includable>
+<b:includable id='feedLinks'>
+ <b:if cond='data:blog.pageType != "item"'> <!-- Blog feed links -->
+ <b:if cond='data:feedLinks'>
+ <div class='blog-feeds'>
+ <b:include data='feedLinks' name='feedLinksBody'/>
+ </div>
+ </b:if>
+
+ <b:else/> <!--Post feed links -->
+ <div class='post-feeds'>
+ <b:loop values='data:posts' var='post'>
+ <b:if cond='data:post.allowComments'>
+ <b:if cond='data:post.feedLinks'>
+ <b:include data='post.feedLinks' name='feedLinksBody'/>
+ </b:if>
+ </b:if>
+ </b:loop>
+ </div>
+ </b:if>
+</b:includable>
+<b:includable id='mobile-index-post' var='post'>
+ <b:if cond='data:post.dateHeader'>
+ <div class='mobile-index-date'>
+ <div class='date-header'>
+ <span><data:post.dateHeader/></span>
+ </div>
+ </div>
+ </b:if>
+
+ <div class='mobile-post-outer'>
+ <a expr:href='data:post.url'>
+ <div class='mobile-index-title-outer'>
+ <h3 class='mobile-index-title entry-title'>
+ <data:post.title/>
+ </h3>
+ </div>
+
+ <div>
+ <div class='mobile-index-arrow'>
+ &rsaquo;
+ </div>
+
+ <div class='mobile-index-contents'>
+ <b:if cond='data:post.thumbnailUrl'>
+ <div class='mobile-index-thumbnail'>
+ <div class='Image'>
+ <img expr:src='data:post.thumbnailUrl'/>
+ </div>
+ </div>
+ </b:if>
+
+ <div class='post-body'>
+ <b:if cond='data:post.snippet'><data:post.snippet/></b:if>
+ </div>
+ </div>
+ <div style='clear: both;'/>
+ </div>
+ </a>
+
+ <div class='mobile-index-comment'>
+ <b:if cond='data:blog.pageType != "item"'>
+ <b:if cond='data:blog.pageType != "static_page"'>
+ <b:if cond='data:post.allowComments'>
+ <b:if cond='data:post.numComments != 0'>
+ <a class='comment-link' expr:href='data:post.addCommentUrl' expr:onclick='data:post.addCommentOnclick'><b:if cond='data:post.numComments == 1'>1 <data:top.commentLabel/><b:else/><data:post.numComments/> <data:top.commentLabelPlural/></b:if></a>
+ </b:if>
+ </b:if>
+ </b:if>
+ </b:if>
+ </div>
+ </div>
+</b:includable>
+<b:includable id='feedLinksBody' var='links'>
+ <div class='feed-links'>
+ <data:feedLinksMsg/>
+ <b:loop values='data:links' var='f'>
+ <a class='feed-link' expr:href='data:f.url' expr:type='data:f.mimeType' target='_blank'><data:f.name/> (<data:f.feedType/>)</a>
+ </b:loop>
+ </div>
+</b:includable>
+<b:includable id='comments' var='post'>
+ <div class='comments' id='comments'>
+ <a name='comments'/>
+ <b:if cond='data:post.allowComments'>
+ <h4>
+ <b:if cond='data:post.numComments == 1'>
+ 1 <data:commentLabel/>:
+ <b:else/>
+ <data:post.numComments/> <data:commentLabelPlural/>:
+ </b:if>
+ </h4>
+
+ <b:if cond='data:post.commentPagingRequired'>
+ <span class='paging-control-container'>
+ <a expr:class='data:post.oldLinkClass' expr:href='data:post.oldestLinkUrl'><data:post.oldestLinkText/></a>
+  
+ <a expr:class='data:post.oldLinkClass' expr:href='data:post.olderLinkUrl'><data:post.olderLinkText/></a>
+  
+ <data:post.commentRangeText/>
+  
+ <a expr:class='data:post.newLinkClass' expr:href='data:post.newerLinkUrl'><data:post.newerLinkText/></a>
+  
+ <a expr:class='data:post.newLinkClass' expr:href='data:post.newestLinkUrl'><data:post.newestLinkText/></a>
+ </span>
+ </b:if>
+
+ <div expr:id='data:widget.instanceId + "_comments-block-wrapper"'>
+ <dl expr:class='data:post.avatarIndentClass' id='comments-block'>
+ <b:loop values='data:post.comments' var='comment'>
+ <dt expr:class='"comment-author " + data:comment.authorClass' expr:id='data:comment.anchorName'>
+ <b:if cond='data:comment.favicon'>
+ <img expr:src='data:comment.favicon' height='16px' style='margin-bottom:-2px;' width='16px'/>
+ </b:if>
+ <a expr:name='data:comment.anchorName'/>
+ <b:if cond='data:blog.enabledCommentProfileImages'>
+ <data:comment.authorAvatarImage/>
+ </b:if>
+ <b:if cond='data:comment.authorUrl'>
+ <a expr:href='data:comment.authorUrl' rel='nofollow'><data:comment.author/></a>
+ <b:else/>
+ <data:comment.author/>
+ </b:if>
+ <data:commentPostedByMsg/>
+ </dt>
+ <dd class='comment-body' expr:id='data:widget.instanceId + data:comment.cmtBodyIdPostfix'>
+ <b:if cond='data:comment.isDeleted'>
+ <span class='deleted-comment'><data:comment.body/></span>
+ <b:else/>
+ <p>
+ <data:comment.body/>
+ </p>
+ </b:if>
+ </dd>
+ <dd class='comment-footer'>
+ <span class='comment-timestamp'>
+ <a expr:href='data:comment.url' title='comment permalink'>
+ <data:comment.timestamp/>
+ </a>
+ <b:include data='comment' name='commentDeleteIcon'/>
+ </span>
+ </dd>
+ </b:loop>
+ </dl>
+ </div>
+
+ <b:if cond='data:post.commentPagingRequired'>
+ <span class='paging-control-container'>
+ <a expr:class='data:post.oldLinkClass' expr:href='data:post.oldestLinkUrl'>
+ <data:post.oldestLinkText/>
+ </a>
+ <a expr:class='data:post.oldLinkClass' expr:href='data:post.olderLinkUrl'>
+ <data:post.olderLinkText/>
+ </a>
+  
+ <data:post.commentRangeText/>
+  
+ <a expr:class='data:post.newLinkClass' expr:href='data:post.newerLinkUrl'>
+ <data:post.newerLinkText/>
+ </a>
+ <a expr:class='data:post.newLinkClass' expr:href='data:post.newestLinkUrl'>
+ <data:post.newestLinkText/>
+ </a>
+ </span>
+ </b:if>
+
+ <p class='comment-footer'>
+ <b:if cond='data:post.embedCommentForm'>
+ <b:if cond='data:post.allowNewComments'>
+ <b:include data='post' name='comment-form'/>
+ <b:else/>
+ <data:post.noNewCommentsText/>
+ </b:if>
+ <b:else/>
+ <b:if cond='data:post.allowComments'>
+ <a expr:href='data:post.addCommentUrl' expr:onclick='data:post.addCommentOnclick'><data:postCommentMsg/></a>
+ </b:if>
+ </b:if>
+
+ </p>
+ </b:if>
+ <b:if cond='data:showCmtPopup'>
+ <div id='comment-popup'>
+ <iframe allowtransparency='true' frameborder='0' id='comment-actions' name='comment-actions' scrolling='no'>
+ </iframe>
+ </div>
+ </b:if>
+
+ <div id='backlinks-container'>
+ <div expr:id='data:widget.instanceId + "_backlinks-container"'>
+ <b:if cond='data:post.showBacklinks'>
+ <b:include data='post' name='backlinks'/>
+ </b:if>
+ </div>
+ </div>
+ </div>
+</b:includable>
+</b:widget>
+</b:section>
+ </div>
+ </div>
+
+ <div class='column-left-outer'>
+ <div class='column-left-inner'>
+ <aside>
+ <macro:include id='main-column-left-sections' name='sections'>
+ <macro:param default='0' name='num' value='2'/>
+ <macro:param default='sidebar-left' name='idPrefix'/>
+ <macro:param default='sidebar' name='class'/>
+ <macro:param default='true' name='includeBottom'/>
+ </macro:include>
+ </aside>
+ </div>
+ </div>
+
+ <div class='column-right-outer'>
+ <div class='column-right-inner'>
+ <aside>
+ <macro:include id='main-column-right-sections' name='sections'>
+ <macro:param default='2' name='num' value='0'/>
+ <macro:param default='sidebar-right' name='idPrefix'/>
+ <macro:param default='sidebar' name='class'/>
+ <macro:param default='true' name='includeBottom'/>
+ </macro:include>
+ </aside>
+ </div>
+ </div>
+
+ </div>
+
+ <div style='clear: both'/>
+ <!-- columns -->
+ </div>
+
+ <!-- main -->
+ </div>
+ </div>
+ <div class='main-cap-bottom cap-bottom'>
+ <div class='cap-left'/>
+ <div class='cap-right'/>
+ </div>
+ </div>
+
+ <footer>
+ <div class='footer-outer'>
+ <div class='footer-cap-top cap-top'>
+ <div class='cap-left'/>
+ <div class='cap-right'/>
+ </div>
+ <div class='fauxborder-left footer-fauxborder-left'>
+ <div class='fauxborder-right footer-fauxborder-right'/>
+ <div class='region-inner footer-inner'>
+ <macro:include id='footer-sections' name='sections'>
+ <macro:param default='2' name='num' value='2'/>
+ <macro:param default='footer' name='idPrefix'/>
+ <macro:param default='foot' name='class'/>
+ <macro:param default='false' name='includeBottom'/>
+ </macro:include>
+ <!-- outside of the include in order to lock Attribution widget -->
+ <b:section class='foot' id='footer-3' showaddelement='no'>
+<b:widget id='Attribution1' locked='false' title='' type='Attribution'>
+<b:includable id='main'>
+ <b:if cond='data:feedbackSurveyLink'>
+ <div class='mobile-survey-link' style='text-align: center;'>
+ <data:feedbackSurveyLink/>
+ </div>
+ </b:if>
+
+ <div class='widget-content' style='text-align: center;'>
+ <b:if cond='data:attribution != ""'>
+ <data:attribution/>
+ </b:if>
+ </div>
+
+ <b:include name='quickedit'/>
+ </b:includable>
+</b:widget>
+</b:section>
+ </div>
+ </div>
+ <div class='footer-cap-bottom cap-bottom'>
+ <div class='cap-left'/>
+ <div class='cap-right'/>
+ </div>
+ </div>
+ </footer>
+
+ <!-- content -->
+ </div>
+ </div>
+ <div class='content-cap-bottom cap-bottom'>
+ <div class='cap-left'/>
+ <div class='cap-right'/>
+ </div>
+ </div>
+ </div>
+
+ <script type='text/javascript'>
+ window.setTimeout(function() {
+ document.body.className = document.body.className.replace('loading', '');
+ }, 10);
+ </script>
+
+<script type="text/javascript">
+ FlattrLoader.setup();
+</script>
+
+
+</body>
+
+<macro:includable id='sections' var='col'>
+ <macro:if cond='data:col.num == 0'>
+ <macro:else/>
+ <b:section mexpr:class='data:col.class' mexpr:id='data:col.idPrefix + "-1"' preferred='yes' showaddelement='yes'/>
+
+ <macro:if cond='data:col.num >= 2'>
+ <table border='0' cellpadding='0' cellspacing='0' mexpr:class='"section-columns columns-" + data:col.num'>
+ <tbody>
+ <tr>
+ <td class='first columns-cell'>
+ <b:section mexpr:class='data:col.class' mexpr:id='data:col.idPrefix + "-2-1"'/>
+ </td>
+
+ <td class='columns-cell'>
+ <b:section mexpr:class='data:col.class' mexpr:id='data:col.idPrefix + "-2-2"'/>
+ </td>
+
+ <macro:if cond='data:col.num >= 3'>
+ <td class='columns-cell'>
+ <b:section mexpr:class='data:col.class' mexpr:id='data:col.idPrefix + "-2-3"'/>
+ </td>
+ </macro:if>
+
+ <macro:if cond='data:col.num >= 4'>
+ <td class='columns-cell'>
+ <b:section mexpr:class='data:col.class' mexpr:id='data:col.idPrefix + "-2-4"'/>
+ </td>
+ </macro:if>
+ </tr>
+ </tbody>
+ </table>
+
+ <macro:if cond='data:col.includeBottom'>
+ <b:section mexpr:class='data:col.class' mexpr:id='data:col.idPrefix + "-3"' showaddelement='no'/>
+ </macro:if>
+ </macro:if>
+ </macro:if>
+</macro:includable>
+
+<b:section-contents id='sidebar-left-1'>
+<b:widget id='LinkList1' locked='false' title='Links of Interest' type='LinkList'>
+<b:includable id='main'>
+
+<b:if cond='data:title'><h2><data:title/></h2></b:if>
+ <div class='widget-content'>
+ <ul>
+ <b:loop values='data:links' var='link'>
+ <li><a expr:href='data:link.target'><data:link.name/></a></li>
+ </b:loop>
+ </ul>
+ <b:include name='quickedit'/>
+ </div>
+</b:includable>
+</b:widget>
+<b:widget id='HTML2' locked='false' title='Donate' type='HTML'>
+<b:includable id='main'>
+ <!-- only display title if it's non-empty -->
+ <b:if cond='data:title != ""'>
+ <h2 class='title'><data:title/></h2>
+ </b:if>
+ <div class='widget-content'>
+ <data:content/>
+ </div>
+
+ <b:include name='quickedit'/>
+</b:includable>
+</b:widget>
+<b:widget id='BlogArchive1' locked='false' title='Blog Archive' type='BlogArchive'>
+<b:includable id='main'>
+ <b:if cond='data:title'>
+ <h2><data:title/></h2>
+ </b:if>
+ <div class='widget-content'>
+ <div id='ArchiveList'>
+ <div expr:id='data:widget.instanceId + "_ArchiveList"'>
+ <b:if cond='data:style == "HIERARCHY"'>
+ <b:include data='data' name='interval'/>
+ </b:if>
+ <b:if cond='data:style == "FLAT"'>
+ <b:include data='data' name='flat'/>
+ </b:if>
+ <b:if cond='data:style == "MENU"'>
+ <b:include data='data' name='menu'/>
+ </b:if>
+ </div>
+ </div>
+ <b:include name='quickedit'/>
+ </div>
+</b:includable>
+<b:includable id='flat' var='data'>
+ <ul class='flat'>
+ <b:loop values='data:data' var='i'>
+ <li class='archivedate'>
+ <a expr:href='data:i.url'><data:i.name/></a> (<data:i.post-count/>)
+ </li>
+ </b:loop>
+ </ul>
+</b:includable>
+<b:includable id='menu' var='data'>
+ <select expr:id='data:widget.instanceId + "_ArchiveMenu"'>
+ <option value=''><data:title/></option>
+ <b:loop values='data:data' var='i'>
+ <option expr:value='data:i.url'><data:i.name/> (<data:i.post-count/>)</option>
+ </b:loop>
+ </select>
+</b:includable>
+<b:includable id='interval' var='intervalData'>
+ <b:loop values='data:intervalData' var='i'>
+ <ul class='hierarchy'>
+ <li expr:class='"archivedate " + data:i.expclass'>
+ <b:include data='i' name='toggle'/>
+ <a class='post-count-link' expr:href='data:i.url'><data:i.name/></a>
+ <span class='post-count' dir='ltr'>(<data:i.post-count/>)</span>
+ <b:if cond='data:i.data'>
+ <b:include data='i.data' name='interval'/>
+ </b:if>
+ <b:if cond='data:i.posts'>
+ <b:include data='i.posts' name='posts'/>
+ </b:if>
+ </li>
+ </ul>
+ </b:loop>
+</b:includable>
+<b:includable id='toggle' var='interval'>
+ <b:if cond='data:interval.toggleId'>
+ <b:if cond='data:interval.expclass == "expanded"'>
+ <a class='toggle' href='javascript:void(0)'>
+ <span class='zippy toggle-open'>▼ </span>
+ </a>
+ <b:else/>
+ <a class='toggle' href='javascript:void(0)'>
+ <span class='zippy'>
+ <b:if cond='data:blog.languageDirection == "rtl"'>
+ ◄ 
+ <b:else/>
+ ► 
+ </b:if>
+ </span>
+ </a>
+ </b:if>
+ </b:if>
+</b:includable>
+<b:includable id='posts' var='posts'>
+ <ul class='posts'>
+ <b:loop values='data:posts' var='i'>
+ <li><a expr:href='data:i.url'><data:i.title/></a></li>
+ </b:loop>
+ </ul>
+</b:includable>
+</b:widget>
+<b:widget id='Profile1' locked='false' title='Contributors' type='Profile'>
+<b:includable id='main'>
+ <b:if cond='data:title != ""'>
+ <h2><data:title/></h2>
+ </b:if>
+ <div class='widget-content'>
+ <b:if cond='data:team == "true"'> <!-- team blog profile -->
+ <ul>
+ <b:loop values='data:authors' var='i'>
+ <li><a expr:href='data:i.userUrl'><data:i.display-name/></a></li>
+ </b:loop>
+ </ul>
+
+ <b:else/> <!-- normal blog profile -->
+
+ <b:if cond='data:photo.url != ""'>
+ <a expr:href='data:userUrl'><img class='profile-img' expr:alt='data:photo.alt' expr:height='data:photo.height' expr:src='data:photo.url' expr:width='data:photo.width'/></a>
+ </b:if>
+
+ <dl class='profile-datablock'>
+ <dt class='profile-data'>
+ <a class='profile-name-link' expr:href='data:userUrl' rel='author'>
+ <data:displayname/>
+ </a>
+ </dt>
+
+ <b:if cond='data:showlocation == "true"'>
+ <dd class='profile-data'><data:location/></dd>
+ </b:if>
+
+ <b:if cond='data:aboutme != ""'><dd class='profile-textblock'><data:aboutme/></dd></b:if>
+ </dl>
+ <a class='profile-link' expr:href='data:userUrl' rel='author'><data:viewProfileMsg/></a>
+ </b:if>
+
+ <b:include name='quickedit'/>
+ </div>
+ </b:includable>
+</b:widget>
+<b:widget id='HTML1' locked='false' title='Subscribe Now' type='HTML'>
+<b:includable id='main'>
+ <!-- only display title if it's non-empty -->
+ <b:if cond='data:title != ""'>
+ <h2 class='title'><data:title/></h2>
+ </b:if>
+ <div class='widget-content'>
+ <data:content/>
+ </div>
+
+ <b:include name='quickedit'/>
+</b:includable>
+</b:widget>
+<b:widget id='HTML3' locked='false' title='Subscriber Count' type='HTML'>
+<b:includable id='main'>
+ <!-- only display title if it's non-empty -->
+ <b:if cond='data:title != ""'>
+ <h2 class='title'><data:title/></h2>
+ </b:if>
+ <div class='widget-content'>
+ <data:content/>
+ </div>
+
+ <b:include name='quickedit'/>
+</b:includable>
+</b:widget>
+</b:section-contents><b:section-contents id='sidebar-left-2-1'/><b:section-contents id='sidebar-left-2-2'/><b:section-contents id='sidebar-left-3'/><b:section-contents id='footer-1'/><b:section-contents id='footer-2-1'/><b:section-contents id='footer-2-2'/></html>
More information about the Pypy-commit
mailing list