<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN"
"http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head><meta http-equiv="content-type" content="text/html; charset=utf-8" />
<title>[1024] sites/trunk/wordpress.tv/public_html: WordPress.tv: Open source WPTV theme.</title>
</head>
<body>

<style type="text/css"><!--
#msg dl.meta { border: 1px #006 solid; background: #369; padding: 6px; color: #fff; }
#msg dl.meta dt { float: left; width: 6em; font-weight: bold; }
#msg dt:after { content:':';}
#msg dl, #msg dt, #msg ul, #msg li, #header, #footer, #logmsg { font-family: verdana,arial,helvetica,sans-serif; font-size: 10pt;  }
#msg dl a { font-weight: bold}
#msg dl a:link    { color:#fc3; }
#msg dl a:active  { color:#ff0; }
#msg dl a:visited { color:#cc6; }
h3 { font-family: verdana,arial,helvetica,sans-serif; font-size: 10pt; font-weight: bold; }
#msg pre { overflow: auto; background: #ffc; border: 1px #fa0 solid; padding: 6px; }
#logmsg { background: #ffc; border: 1px #fa0 solid; padding: 1em 1em 0 1em; }
#logmsg p, #logmsg pre, #logmsg blockquote { margin: 0 0 1em 0; }
#logmsg p, #logmsg li, #logmsg dt, #logmsg dd { line-height: 14pt; }
#logmsg h1, #logmsg h2, #logmsg h3, #logmsg h4, #logmsg h5, #logmsg h6 { margin: .5em 0; }
#logmsg h1:first-child, #logmsg h2:first-child, #logmsg h3:first-child, #logmsg h4:first-child, #logmsg h5:first-child, #logmsg h6:first-child { margin-top: 0; }
#logmsg ul, #logmsg ol { padding: 0; list-style-position: inside; margin: 0 0 0 1em; }
#logmsg ul { text-indent: -1em; padding-left: 1em; }#logmsg ol { text-indent: -1.5em; padding-left: 1.5em; }
#logmsg > ul, #logmsg > ol { margin: 0 0 1em 0; }
#logmsg pre { background: #eee; padding: 1em; }
#logmsg blockquote { border: 1px solid #fa0; border-left-width: 10px; padding: 1em 1em 0 1em; background: white;}
#logmsg dl { margin: 0; }
#logmsg dt { font-weight: bold; }
#logmsg dd { margin: 0; padding: 0 0 0.5em 0; }
#logmsg dd:before { content:'\00bb';}
#logmsg table { border-spacing: 0px; border-collapse: collapse; border-top: 4px solid #fa0; border-bottom: 1px solid #fa0; background: #fff; }
#logmsg table th { text-align: left; font-weight: normal; padding: 0.2em 0.5em; border-top: 1px dotted #fa0; }
#logmsg table td { text-align: right; border-top: 1px dotted #fa0; padding: 0.2em 0.5em; }
#logmsg table thead th { text-align: center; border-bottom: 1px solid #fa0; }
#logmsg table th.Corner { text-align: left; }
#logmsg hr { border: none 0; border-top: 2px dashed #fa0; height: 1px; }
#header, #footer { color: #fff; background: #636; border: 1px #300 solid; padding: 6px; }
#patch { width: 100%; }
#patch h4 {font-family: verdana,arial,helvetica,sans-serif;font-size:10pt;padding:8px;background:#369;color:#fff;margin:0;}
#patch .propset h4, #patch .binary h4 {margin:0;}
#patch pre {padding:0;line-height:1.2em;margin:0;}
#patch .diff {width:100%;background:#eee;padding: 0 0 10px 0;overflow:auto;}
#patch .propset .diff, #patch .binary .diff  {padding:10px 0;}
#patch span {display:block;padding:0 10px;}
#patch .modfile, #patch .addfile, #patch .delfile, #patch .propset, #patch .binary, #patch .copfile {border:1px solid #ccc;margin:10px 0;}
#patch ins {background:#dfd;text-decoration:none;display:block;padding:0 10px;}
#patch del {background:#fdd;text-decoration:none;display:block;padding:0 10px;}
#patch .lines, .info {color:#888;background:#fff;}
--></style>
<div id="msg">
<dl class="meta" style="font-size: 105%">
<dt style="float: left; width: 6em; font-weight: bold">Revision</dt> <dd><a style="font-weight: bold" href="http://meta.trac.wordpress.org/changeset/1024">1024</a><script type="application/ld+json">{"@context":"http://schema.org","@type":"EmailMessage","description":"Review this Commit","action":{"@type":"ViewAction","url":"http://meta.trac.wordpress.org/changeset/1024","name":"Review Commit"}}</script></dd>
<dt style="float: left; width: 6em; font-weight: bold">Author</dt> <dd>iandunn</dd>
<dt style="float: left; width: 6em; font-weight: bold">Date</dt> <dd>2014-12-03 20:10:33 +0000 (Wed, 03 Dec 2014)</dd>
</dl>

<pre style='padding-left: 1em; margin: 2em 0; border-left: 2px solid #ccc; line-height: 1.25; font-size: 105%; font-family: sans-serif'>WordPress.tv: Open source WPTV theme.

See <a href="http://meta.trac.wordpress.org/ticket/475">#475</a>
props obenland</pre>

<h3>Added Paths</h3>
<ul>
<li>sites/trunk/wordpress.tv/public_html/wp-content/</li>
<li>sites/trunk/wordpress.tv/public_html/wp-content/themes/</li>
<li>sites/trunk/wordpress.tv/public_html/wp-content/themes/wptv2/</li>
<li><a href="#sitestrunkwordpresstvpublic_htmlwpcontentthemeswptv2404php">sites/trunk/wordpress.tv/public_html/wp-content/themes/wptv2/404.php</a></li>
<li><a href="#sitestrunkwordpresstvpublic_htmlwpcontentthemeswptv2anonuploadtemplatephp">sites/trunk/wordpress.tv/public_html/wp-content/themes/wptv2/anon-upload-template.php</a></li>
<li><a href="#sitestrunkwordpresstvpublic_htmlwpcontentthemeswptv2archivephp">sites/trunk/wordpress.tv/public_html/wp-content/themes/wptv2/archive.php</a></li>
<li><a href="#sitestrunkwordpresstvpublic_htmlwpcontentthemeswptv2breadcrumbsphp">sites/trunk/wordpress.tv/public_html/wp-content/themes/wptv2/breadcrumbs.php</a></li>
<li><a href="#sitestrunkwordpresstvpublic_htmlwpcontentthemeswptv2categorywordcamptvphp">sites/trunk/wordpress.tv/public_html/wp-content/themes/wptv2/category-wordcamptv.php</a></li>
<li><a href="#sitestrunkwordpresstvpublic_htmlwpcontentthemeswptv2categoryphp">sites/trunk/wordpress.tv/public_html/wp-content/themes/wptv2/category.php</a></li>
<li><a href="#sitestrunkwordpresstvpublic_htmlwpcontentthemeswptv2commentsphp">sites/trunk/wordpress.tv/public_html/wp-content/themes/wptv2/comments.php</a></li>
<li><a href="#sitestrunkwordpresstvpublic_htmlwpcontentthemeswptv2footerphp">sites/trunk/wordpress.tv/public_html/wp-content/themes/wptv2/footer.php</a></li>
<li><a href="#sitestrunkwordpresstvpublic_htmlwpcontentthemeswptv2frontpagephp">sites/trunk/wordpress.tv/public_html/wp-content/themes/wptv2/front-page.php</a></li>
<li><a href="#sitestrunkwordpresstvpublic_htmlwpcontentthemeswptv2functionsphp">sites/trunk/wordpress.tv/public_html/wp-content/themes/wptv2/functions.php</a></li>
<li><a href="#sitestrunkwordpresstvpublic_htmlwpcontentthemeswptv2headerphp">sites/trunk/wordpress.tv/public_html/wp-content/themes/wptv2/header.php</a></li>
<li>sites/trunk/wordpress.tv/public_html/wp-content/themes/wptv2/i/</li>
<li><a href="#sitestrunkwordpresstvpublic_htmlwpcontentthemeswptv2iarrowpng">sites/trunk/wordpress.tv/public_html/wp-content/themes/wptv2/i/arrow.png</a></li>
<li><a href="#sitestrunkwordpresstvpublic_htmlwpcontentthemeswptv2iautomatticpng">sites/trunk/wordpress.tv/public_html/wp-content/themes/wptv2/i/automattic.png</a></li>
<li><a href="#sitestrunkwordpresstvpublic_htmlwpcontentthemeswptv2ibgpng">sites/trunk/wordpress.tv/public_html/wp-content/themes/wptv2/i/bg.png</a></li>
<li><a href="#sitestrunkwordpresstvpublic_htmlwpcontentthemeswptv2iheaderbgpng">sites/trunk/wordpress.tv/public_html/wp-content/themes/wptv2/i/header-bg.png</a></li>
<li><a href="#sitestrunkwordpresstvpublic_htmlwpcontentthemeswptv2imichaelpickstashesaguinnessgif">sites/trunk/wordpress.tv/public_html/wp-content/themes/wptv2/i/michael-pick-stashes-a-guinness.gif</a></li>
<li><a href="#sitestrunkwordpresstvpublic_htmlwpcontentthemeswptv2inoisepng">sites/trunk/wordpress.tv/public_html/wp-content/themes/wptv2/i/noise.png</a></li>
<li><a href="#sitestrunkwordpresstvpublic_htmlwpcontentthemeswptv2inotfoundpng">sites/trunk/wordpress.tv/public_html/wp-content/themes/wptv2/i/notfound.png</a></li>
<li><a href="#sitestrunkwordpresstvpublic_htmlwpcontentthemeswptv2ivideopresspoweredpng">sites/trunk/wordpress.tv/public_html/wp-content/themes/wptv2/i/videopresspowered.png</a></li>
<li><a href="#sitestrunkwordpresstvpublic_htmlwpcontentthemeswptv2ivideowrapperbgpng">sites/trunk/wordpress.tv/public_html/wp-content/themes/wptv2/i/videowrapper-bg.png</a></li>
<li><a href="#sitestrunkwordpresstvpublic_htmlwpcontentthemeswptv2iwptv2xpng">sites/trunk/wordpress.tv/public_html/wp-content/themes/wptv2/i/wptv-2x.png</a></li>
<li><a href="#sitestrunkwordpresstvpublic_htmlwpcontentthemeswptv2iwptvbluepng">sites/trunk/wordpress.tv/public_html/wp-content/themes/wptv2/i/wptv-blue.png</a></li>
<li><a href="#sitestrunkwordpresstvpublic_htmlwpcontentthemeswptv2iwptvgradpng">sites/trunk/wordpress.tv/public_html/wp-content/themes/wptv2/i/wptv-grad.png</a></li>
<li><a href="#sitestrunkwordpresstvpublic_htmlwpcontentthemeswptv2iwptvlogopng">sites/trunk/wordpress.tv/public_html/wp-content/themes/wptv2/i/wptv-logo.png</a></li>
<li><a href="#sitestrunkwordpresstvpublic_htmlwpcontentthemeswptv2iwptvpng">sites/trunk/wordpress.tv/public_html/wp-content/themes/wptv2/i/wptv.png</a></li>
<li><a href="#sitestrunkwordpresstvpublic_htmlwpcontentthemeswptv2ie6css">sites/trunk/wordpress.tv/public_html/wp-content/themes/wptv2/ie6.css</a></li>
<li>sites/trunk/wordpress.tv/public_html/wp-content/themes/wptv2/inc/</li>
<li><a href="#sitestrunkwordpresstvpublic_htmlwpcontentthemeswptv2incwpcomphp">sites/trunk/wordpress.tv/public_html/wp-content/themes/wptv2/inc/wpcom.php</a></li>
<li><a href="#sitestrunkwordpresstvpublic_htmlwpcontentthemeswptv2indexphp">sites/trunk/wordpress.tv/public_html/wp-content/themes/wptv2/index.php</a></li>
<li>sites/trunk/wordpress.tv/public_html/wp-content/themes/wptv2/js/</li>
<li><a href="#sitestrunkwordpresstvpublic_htmlwpcontentthemeswptv2jsdropdownsjs">sites/trunk/wordpress.tv/public_html/wp-content/themes/wptv2/js/dropdowns.js</a></li>
<li><a href="#sitestrunkwordpresstvpublic_htmlwpcontentthemeswptv2pagephp">sites/trunk/wordpress.tv/public_html/wp-content/themes/wptv2/page.php</a></li>
<li><a href="#sitestrunkwordpresstvpublic_htmlwpcontentthemeswptv2paginationphp">sites/trunk/wordpress.tv/public_html/wp-content/themes/wptv2/pagination.php</a></li>
<li>sites/trunk/wordpress.tv/public_html/wp-content/themes/wptv2/plugins/</li>
<li><a href="#sitestrunkwordpresstvpublic_htmlwpcontentthemeswptv2pluginsrewritephp">sites/trunk/wordpress.tv/public_html/wp-content/themes/wptv2/plugins/rewrite.php</a></li>
<li>sites/trunk/wordpress.tv/public_html/wp-content/themes/wptv2/plugins/wordpresstv-anon-upload/</li>
<li><a href="#sitestrunkwordpresstvpublic_htmlwpcontentthemeswptv2pluginswordpresstvanonuploadanonuploadphp">sites/trunk/wordpress.tv/public_html/wp-content/themes/wptv2/plugins/wordpresstv-anon-upload/anon-upload.php</a></li>
<li>sites/trunk/wordpress.tv/public_html/wp-content/themes/wptv2/plugins/wordpresstv-oembed/</li>
<li><a href="#sitestrunkwordpresstvpublic_htmlwpcontentthemeswptv2pluginswordpresstvoembedwordpresstvoembedphp">sites/trunk/wordpress.tv/public_html/wp-content/themes/wptv2/plugins/wordpresstv-oembed/wordpresstv-oembed.php</a></li>
<li>sites/trunk/wordpress.tv/public_html/wp-content/themes/wptv2/plugins/wordpresstv-rest/</li>
<li><a href="#sitestrunkwordpresstvpublic_htmlwpcontentthemeswptv2pluginswordpresstvrestwordpresstvrestphp">sites/trunk/wordpress.tv/public_html/wp-content/themes/wptv2/plugins/wordpresstv-rest/wordpresstv-rest.php</a></li>
<li>sites/trunk/wordpress.tv/public_html/wp-content/themes/wptv2/plugins/wordpresstv-unisubs/</li>
<li><a href="#sitestrunkwordpresstvpublic_htmlwpcontentthemeswptv2pluginswordpresstvunisubswordpresstvunisubsphp">sites/trunk/wordpress.tv/public_html/wp-content/themes/wptv2/plugins/wordpresstv-unisubs/wordpresstv-unisubs.php</a></li>
<li>sites/trunk/wordpress.tv/public_html/wp-content/themes/wptv2/plugins/wordpresstv-upload-subtitles/</li>
<li><a href="#sitestrunkwordpresstvpublic_htmlwpcontentthemeswptv2pluginswordpresstvuploadsubtitleswordpresstvuploadsubtitlesphp">sites/trunk/wordpress.tv/public_html/wp-content/themes/wptv2/plugins/wordpresstv-upload-subtitles/wordpresstv-upload-subtitles.php</a></li>
<li><a href="#sitestrunkwordpresstvpublic_htmlwpcontentthemeswptv2searchphp">sites/trunk/wordpress.tv/public_html/wp-content/themes/wptv2/search.php</a></li>
<li><a href="#sitestrunkwordpresstvpublic_htmlwpcontentthemeswptv2sidebareventphp">sites/trunk/wordpress.tv/public_html/wp-content/themes/wptv2/sidebar-event.php</a></li>
<li><a href="#sitestrunkwordpresstvpublic_htmlwpcontentthemeswptv2sidebarsinglephp">sites/trunk/wordpress.tv/public_html/wp-content/themes/wptv2/sidebar-single.php</a></li>
<li><a href="#sitestrunkwordpresstvpublic_htmlwpcontentthemeswptv2sidebarwordcamptvphp">sites/trunk/wordpress.tv/public_html/wp-content/themes/wptv2/sidebar-wordcamptv.php</a></li>
<li><a href="#sitestrunkwordpresstvpublic_htmlwpcontentthemeswptv2sidebarphp">sites/trunk/wordpress.tv/public_html/wp-content/themes/wptv2/sidebar.php</a></li>
<li><a href="#sitestrunkwordpresstvpublic_htmlwpcontentthemeswptv2singlephp">sites/trunk/wordpress.tv/public_html/wp-content/themes/wptv2/single.php</a></li>
<li><a href="#sitestrunkwordpresstvpublic_htmlwpcontentthemeswptv2stylecss">sites/trunk/wordpress.tv/public_html/wp-content/themes/wptv2/style.css</a></li>
<li><a href="#sitestrunkwordpresstvpublic_htmlwpcontentthemeswptv2taxonomyeventphp">sites/trunk/wordpress.tv/public_html/wp-content/themes/wptv2/taxonomy-event.php</a></li>
<li><a href="#sitestrunkwordpresstvpublic_htmlwpcontentthemeswptv2uploadsubtitlestemplatephp">sites/trunk/wordpress.tv/public_html/wp-content/themes/wptv2/upload-subtitles-template.php</a></li>
</ul>

</div>
<div id="patch">
<h3>Diff</h3>
<a id="sitestrunkwordpresstvpublic_htmlwpcontentthemeswptv2404php"></a>
<div class="addfile"><h4 style="background-color: #eee; color: inherit; margin: 1em 0; padding: 1.3em; font-size: 115%">Added: sites/trunk/wordpress.tv/public_html/wp-content/themes/wptv2/404.php</h4>
<pre class="diff"><span>
<span class="info" style="display: block; padding: 0 10px; color: #888">--- sites/trunk/wordpress.tv/public_html/wp-content/themes/wptv2/404.php                              (rev 0)
+++ sites/trunk/wordpress.tv/public_html/wp-content/themes/wptv2/404.php        2014-12-03 20:10:33 UTC (rev 1024)
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -0,0 +1,30 @@
</span><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+<?php
+/*
+ * WordCamp.tv Index Fallback
+ *
+ * It will be weird if somebody sees this (but okay if 404)
+ */
+
+get_header();
+global $wp_query, $post, $wptv;
+?>
+       <div class="wptv-hero">
+               <h2 class="page-title"><?php esc_html_e( 'Whoops!', 'wptv' ); ?></h2>
+       </div>
+       <div class="container">
+               <div class="primary-content">
+                       <div class="baron-von-pick">
+                               <img src="<?php echo get_stylesheet_directory_uri(); ?>/i/michael-pick-stashes-a-guinness.gif" alt="" /><br />
+                               <?php printf( __( 'Photo animation credit: %s.', 'wptv' ), '<a href="http://markjaquith.com/">Mark Jaquith</a>' ); ?>
+                       </div>
+                       <div class="message-404">
+                               <h2><?php esc_html_e( 'Uh oh, someone made a mistake!', 'wptv' ); ?></h2>
+                               <p><?php esc_html_e( 'These sorts of things happen&hellip;', 'wptv' ); ?></p>
+                               <p><?php esc_html_e( 'Try searching for what you were looking for.', 'wptv' ); ?></p>
+                               <p><?php echo get_search_form(); ?></p>
+                               <p><?php printf( __( 'Or, <a href="%s">visit the homepage</a> to start a fresh journey.', 'wptv' ), '/' ); ?></p>
+                       </div>
+               </div>
+       </div><!-- container -->
+<?php
+get_footer();
</ins></span></pre></div>
<a id="sitestrunkwordpresstvpublic_htmlwpcontentthemeswptv2anonuploadtemplatephp"></a>
<div class="addfile"><h4 style="background-color: #eee; color: inherit; margin: 1em 0; padding: 1.3em; font-size: 115%">Added: sites/trunk/wordpress.tv/public_html/wp-content/themes/wptv2/anon-upload-template.php</h4>
<pre class="diff"><span>
<span class="info" style="display: block; padding: 0 10px; color: #888">--- sites/trunk/wordpress.tv/public_html/wp-content/themes/wptv2/anon-upload-template.php                             (rev 0)
+++ sites/trunk/wordpress.tv/public_html/wp-content/themes/wptv2/anon-upload-template.php       2014-12-03 20:10:33 UTC (rev 1024)
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -0,0 +1,402 @@
</span><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+<?php
+/**
+ * Template Name: Anon video upload
+ *
+ * A custom page template containing the "submit video" form
+ */
+
+
+function anon_upload_css() {
+       ?>
+       <style type="text/css">
+       <?php // theme structural css ?>
+       html,
+       body {
+               width: 100%;
+               height: 100%;
+               margin: 0;
+       }
+
+       .page-template-anon-upload-template-php #page {
+               height: auto;
+               min-height: 100%;
+               position: relative;
+               width: 100%;
+       }
+
+       .page-template-anon-upload-template-php #header {
+               margin: 0;
+               padding-top: 10px;
+       }
+
+       .page-template-anon-upload-template-php #footer {
+               position: absolute;
+               bottom: 0;
+               right: 0;
+               left: 0;
+       }
+
+       .video-upload {
+               padding-bottom: 70px;
+       }
+
+       .noscript-show p {
+               margin: 0 !important;
+       }
+       <?php // theme structural end ?>
+
+       .container {
+               overflow: hidden;
+       }
+
+       .video-upload-left {
+               max-width: 550px;
+       }
+
+       .video-upload-right {
+               float: right;
+               width: 390px;
+               margin: -25px 0 25px;
+       }
+
+       .video-upload p {
+               margin: 16px 0;
+       }
+
+       .video-upload h3 {
+               font-size: 22px;
+       }
+
+       .video-upload div.error {
+               border: 1px solid #c00;
+               border-radius: 3px;
+               background-color: #ffebe8;
+               padding: 0 10px;
+               margin: 10px 0;
+       }
+
+       .video-upload div.error p {
+               margin: 0.5em 0;
+       }
+
+       .video-upload-left p > label,
+       .video-upload-left div > label {
+               padding: 4px 0 0;
+               display: block;
+               width: 130px;
+               float: left;
+               font-weight: bold;
+       }
+
+       .video-upload-left p > label.wptv-video-wordcamp-cb {
+               display: inline;
+               float: none;
+       }
+
+       .video-upload-left p label .required {
+               line-height: 15px;
+               vertical-align: bottom;
+               margin: 0 3px;
+       }
+
+       .video-upload-left input[type="text"],
+       .video-upload-left textarea,
+       .video-upload-left ul.cats-checkboxes {
+           border-radius: 3px;
+           border: 1px solid #dfdfdf;
+           color: #333;
+           background-color: #fff;
+           padding: 4px;
+           width: 329px;
+               max-width: 329px;
+       }
+
+       .video-upload-left ul.cats-checkboxes {
+               margin-left: 130px;
+               height: 150px;
+               overflow: auto;
+       }
+
+       .video-upload-left ul.cats-checkboxes ul.children {
+               margin-left: 15px;
+       }
+
+       .video-upload-left input[type="text"]:focus,
+       .video-upload-left textarea:focus {
+               border-color: #bbb;
+       }
+
+               .video-upload-left #wptv_honey_container {
+                       display: none;
+               }
+
+       #video-upload-form p.last {
+               margin: 5px 80px 25px;
+               text-align: right;
+       }
+
+       #video-upload-form p .invalid {
+               border: 1px solid red;
+       }
+
+       #video-upload-form input[type="submit"] {
+               font-size: 15px;
+               padding: 4px 12px;
+       }
+
+       .page-template-anon-upload-template-php .wptv-hero {
+               padding: 20px;
+       }
+
+       .page-template-anon-upload-template-php .wptv-hero h2 {
+               font-size: 24px;
+       }
+
+       .video-upload-right .accepted-formats {
+               margin-left: 16px;
+       }
+
+       .video-upload-right .accepted-formats li {
+               list-style: square;
+       }
+
+       .video-upload-right h3 {
+               padding-bottom: 4px;
+       }
+
+       .video-upload .pass-form label {
+               float: none;
+               display: inline;
+               width: auto;
+       }
+       </style>
+       <?php
+}
+
+add_action( 'wp_head', 'anon_upload_css' );
+
+get_header();
+
+$message = '';
+
+if ( !empty($_REQUEST['error']) ) {
+       $message = (int) $_REQUEST['error'];
+
+       switch ( $message ) {
+               case 1:
+                       $message = 'Error: pleas select a video file.';
+                       break;
+               case 2:
+                       $message = 'Error: invalid file type.';
+                       break;
+               case 3:
+                       $message = 'Error: unknown file type.';
+                       break;
+               case 4:
+                       $message = 'Upload error: the video cannot be saved.';
+                       break;
+               case 5:
+                       $message = 'Unknown error. Please try again later.';
+                       break;
+               case 6:
+                       $message = 'Error: invalid submission.';
+                       break;
+               // these shouldn't show, JS form validation should catch them
+               case 10:
+                       $message = 'Error: pleas enter your name.';
+                       break;
+               case 11:
+                       $message = 'Error: pleas enter your email address.';
+                       break;
+               case 12:
+                       $message = 'Error: pleas enter a valid email address.';
+                       break;
+               case 13:
+                       $message = "Error: please leave the first field empty. (It helps us know you're not a spammer.)";
+                       break;
+       }
+       $message = '<div class="error"><p>' . $message . '</p></div>';
+} elseif ( !empty($_REQUEST['success']) ) {
+       $message = '<h3>Thank you for submitting a video; it was uploaded successfully.</h3><p>Submit another?</p>';
+}
+
+?>
+
+<div class="wptv-hero">
+       <div class="single container">
+               <h2><?php esc_html_e( 'Submit a video' ); ?></h2>
+       </div>
+</div>
+
+<div class="container">
+<div class="video-upload">
+<?php
+
+       // temp pwd?
+       if ( post_password_required() ) {
+               echo '<div class="pass-form">';
+               echo get_the_password_form();
+               echo '</div></div></div>';
+               get_footer();
+               return;
+       } else {
+               echo $message;
+       }
+
+?>
+<noscript><div class="error"><p>This form requires JavaScript. Please enable it in your browser and reload the page.</p></div></noscript>
+<div class="video-upload-right">
+       <h3>Guidelines</h3>
+       <p>WordCamp videos: the audio is clear and easy to understand, the camera was on a tripod, the video shows the speaker and slides, divide the video by presentation if possible.</p>
+       <p>Screencasts: keep it concise, keep it clear, keep on track (no chock-full of personal promotion please), keep it current.</p>
+       <p>Vodcasts and other video-based content: if you have put together a video podcast or other WordPress focused, relevant video - let us <a href="http://wordpress.tv/contact/">know about it</a>.
+       <p>If this is the first time you're submitting a video, please check all <a href="http://blog.wordpress.tv/submission-guidelines/">Submission Guidelines</a>.</p>
+       <h3>Accepted formats</h3>
+       <p>Maximum upload file size: 1GB. You can upload the following video formats:</p>
+       <ul class="accepted-formats">
+               <li>avi</li>
+               <li>mov/qt</li>
+               <li>mpeg/mpg</li>
+               <li>mp4</li>
+               <li>ogv</li>
+               <li>wmv</li>
+               <li>3gp/3g2</li>
+       </ul>
+</div>
+
+<div class="video-upload-left">
+<?php if ( !$message ) { ?>
+       <p>Please review the guidelines listed on the right, then submit your video below:</p>
+<?php } ?>
+
+       <form method="post" action="<?php echo admin_url('admin-post.php'); ?>" id="video-upload-form" enctype="multipart/form-data">
+       <?php wp_nonce_field('wptv-upload-video', 'wptvvideon'); ?>
+       <input type="hidden" name="action" value="wptv_video_upload" />
+
+       <?php // This field only exists to trap spam bots that will automatically fill it in. It will be hidden from normal users. ?>
+       <p id="wptv_honey_container">
+               <label for="wptv_honey"><?php esc_html_e( 'Leave this empty' ); ?></label>
+               <input type="text" id="wptv_honey" name="wptv_honey" value="" />
+       </p>
+       <p>
+               <input type="checkbox" id="wptv_video_wordcamp" name="wptv_video_wordcamp" />
+               <label for="wptv_video_wordcamp" class="wptv-video-wordcamp-cb"><?php esc_html_e( 'This is a WordCamp video' ); ?></label>
+       </p>
+
+       <?php if ( ! is_user_logged_in() ) : ?>
+       <p>
+               <label for="wptv_uploaded_by"><?php esc_html_e( 'Uploaded by' ); ?><span class="required"> * </span></label>
+               <input type="text" id="wptv_uploaded_by" name="wptv_uploaded_by" value="" />
+       </p>
+       <p>
+               <label for="wptv_email"><?php esc_html_e( 'Email address' ); ?><span class="required"> * </span></label>
+               <input type="text" id="wptv_email" name="wptv_email" value="" />
+       </p>
+       <?php endif; ?>
+
+       <p>
+               <label for="wptv_video_title"><?php esc_html_e( 'Video title' ); ?></label>
+               <input type="text" id="wptv_video_title" name="wptv_video_title" value="" />
+       </p>
+       <p>
+               <label for="wptv_language"><?php esc_html_e( 'Language' ); ?></label>
+               <input type="text" id="wptv_language" name="wptv_language" value="" />
+       </p>
+
+       <div class="cats">
+               <label for="wptv_categories"><?php esc_html_e( 'Category' ); ?></label>
+               <ul class="cats-checkboxes">
+                       <?php
+                               include_once( ABSPATH . '/wp-admin/includes/template.php' );
+                               wp_category_checklist();
+                       ?>
+               </ul>
+       </div>
+
+       <p>
+               <label for="wptv_video_producer"><?php esc_html_e( 'Video producer' ); ?></label>
+               <input type="text" id="wptv_video_producer" name="wptv_video_producer" value="" />
+       </p>
+       <p>
+               <label for="wptv_speakers"><?php esc_html_e( 'Speakers' ); ?></label>
+               <input type="text" id="wptv_speakers" name="wptv_speakers" value="" />
+       </p>
+       <p>
+               <label for="wptv_event"><?php esc_html_e( 'Event' ); ?></label>
+               <input type="text" id="wptv_event" name="wptv_event" value="" />
+       </p>
+       <p>
+               <label for="wptv_video_description"><?php esc_html_e( 'Description' ); ?></label>
+               <textarea name="wptv_video_description" id="wptv_video_description" rows="8" cols="40"></textarea>
+       </p>
+       <p>
+               <label for="wptv_file"><?php esc_html_e( 'Video file' ); ?><span class="required"> * </span></label>
+               <input type="file" name="wptv_file" id="wptv_file" />
+       </p>
+       <p class="last">
+               <input type="submit" id="wptv_video_upload" style="display:none;" value="<?php esc_attr_e( 'Submit' ); ?>" />
+       </p>
+       </form>
+</div>
+</div>
+</div>
+
+<script type="text/javascript">
+jQuery( function($) {
+       var invalid,
+               val,
+               uploaded_by = $( '#wptv_uploaded_by' ),
+               email       = $( '#wptv_email' ),
+               file        = $( '#wptv_file' ),
+               honey       = $( '#wptv_honey' );
+
+       invalid = function( el, e ) {
+               el.addClass( 'invalid' );
+               el.one( 'click', function() {
+                       $( this ).removeClass( 'invalid' );
+               } );
+               e.preventDefault();
+       }
+
+       $( '#wptv_video_upload' ).show();
+       $( '#video-upload-form input[type="text"]' ).each( function() {
+               $( this ).attr( 'maxlength', '100' );
+       } );
+       $( 'ul.cats-checkboxes input' ).prop( 'disabled', false );
+
+       $( '#video-upload-form' ).submit( function( e ) {
+               var scroll = false;
+
+               if ( uploaded_by.length && ! uploaded_by.val() ) {
+                       invalid( uploaded_by, e );
+                       scroll = true;
+               }
+
+               if ( email.length ) {
+                       val = email.val();
+
+                       if ( !val || !/\S+@\S+\.\S+/.test( val ) ) {
+                               invalid(email, e);
+                               scroll = true;
+                       }
+               }
+
+               if ( ! file.val() || !/\.(avi|mov|qt|mpeg|mpg|mpe|mp4|m4v|asf|asx|wax|wmv|wmx|ogv|3gp|3g2)$/.test( file.val() ) ) {
+                       invalid(file, e);
+               }
+
+               // If there's any input in the honeypot field, it was probably put there by a bot, so reject the submission
+               if ( honey.val().length > 0 ) {
+                       invalid( honey, e );
+                       scroll = true;
+               }
+
+               if ( scroll && uploaded_by.length ) {
+                       uploaded_by.get( 0 ).scrollIntoView();
+               }
+       } );
+} );
+</script>
+
+<?php get_footer();
+
</ins></span></pre></div>
<a id="sitestrunkwordpresstvpublic_htmlwpcontentthemeswptv2archivephp"></a>
<div class="addfile"><h4 style="background-color: #eee; color: inherit; margin: 1em 0; padding: 1.3em; font-size: 115%">Added: sites/trunk/wordpress.tv/public_html/wp-content/themes/wptv2/archive.php</h4>
<pre class="diff"><span>
<span class="info" style="display: block; padding: 0 10px; color: #888">--- sites/trunk/wordpress.tv/public_html/wp-content/themes/wptv2/archive.php                          (rev 0)
+++ sites/trunk/wordpress.tv/public_html/wp-content/themes/wptv2/archive.php    2014-12-03 20:10:33 UTC (rev 1024)
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -0,0 +1,90 @@
</span><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+<?php
+/*
+ * WordCamp.tv Archives
+ *
+ * Yearly, monthly, daily, author and whatever falls back to archive.php.
+ */
+
+get_header();
+global $wp_query, $post, $wptv;
+?>
+<div class="wptv-hero">
+       <h2 class="page-title"><?php
+               if ( is_category() ) :
+                       printf( __( '&#8216;%s&#8217; Videos', 'wptv' ), single_cat_title( '', false ) );
+
+               elseif ( is_tag() ) :
+                       printf( __( '&#8216;%s&#8217; Videos', 'wptv' ), single_tag_title( '', false ) );
+
+               elseif ( is_day() ) :
+                       printf( _x( 'Archive for %s', 'Daily archive page', 'wptv' ), get_the_time( __( 'F jS, Y', 'wptv' ) ) );
+
+               elseif ( is_month() ) :
+                       printf( _x( 'Archive for %s', 'Monthly archive page', 'wptv' ), get_the_time( __( 'F, Y', 'wptv' ) ) );
+
+               elseif ( is_year() ) :
+                       printf( _x( 'Archive for %s', 'Yearly archive page', 'wptv' ), get_the_time( __( 'Y', 'wptv' ) ) );
+
+               elseif ( is_author() ) :
+                       esc_html_e( 'Author Archive', 'wptv' );
+
+               elseif ( isset( $wp_query->query_vars['taxonomy'] ) ) :
+                       $tax   = get_taxonomy( $wp_query->query_vars['taxonomy'] );
+                       $terms = get_term_by( 'slug', $wp_query->query_vars['term'], $wp_query->query_vars['taxonomy'] );
+                       print( "$tax->label: $terms->name" );
+
+               elseif ( is_search() ) :
+                       printf( __( 'Search Results for &#8216;%s&#8217;', 'wptv' ), '<span>' . get_search_query() . '</span>' );
+
+               else :
+                       esc_html_e( 'Archives', 'wptv' );
+
+               endif;
+       ?>
+       </h2>
+</div>
+<div class="container">
+       <div class="primary-content">
+
+               <?php if ( have_posts() ) : ?>
+               <ul class="archive video-list">
+
+                       <?php while ( have_posts() ) : the_post(); ?>
+                       <li>
+                               <a href="<?php the_permalink(); ?>" class="video-thumbnail">
+                                       <?php $wptv->the_video_image( 50, null, false ); ?>
+                               </a>
+                               <div class="video-description">
+                                       <h4 class="video-title"><a href="<?php the_permalink(); ?>"><?php the_title(); ?></a></h4>
+                                       <?php
+                                               $wptv->the_terms( 'event', '<span class="video-events">', ', ', '</span>', false );
+                                               $label = _n( 'Speaker:', 'Speakers:', count( get_the_terms( $post->ID, 'speakers' ) ), 'wptv' );
+                                               $wptv->the_terms( 'speakers', '<span class="video-speakers"><strong>' . $label . '</strong> ', ', ', '</span>', false );
+                                       ?>
+                                       <span class="video-excerpt">
+                                               <?php
+                                                       $excerpt = get_the_time( get_option( 'date_format' ) );
+                                                       if ( has_excerpt() ) {
+                                                               $excerpt .= ' &#8212 ' . get_the_excerpt();
+                                                       }
+                                                       echo apply_filters( 'the_excerpt', $excerpt );
+                                               ?>
+                                       </span>
+                               </div>
+                       </li>
+                       <?php endwhile; // have_posts ?>
+
+               </ul><!-- .archive.video-list -->
+               <?php else: // have_posts ?>
+
+                       <h3><?php esc_html_e( 'No videos found.', 'wptv' ); ?></h3>
+
+               <?php endif; // have_posts ?>
+
+               <?php get_template_part( 'pagination' ); ?>
+
+       </div><!-- primary-content -->
+       <?php get_sidebar(); ?>
+</div><!-- .container -->
+<?php
+get_footer();
</ins><span class="cx" style="display: block; padding: 0 10px">\ No newline at end of file
</span></span></pre></div>
<a id="sitestrunkwordpresstvpublic_htmlwpcontentthemeswptv2breadcrumbsphp"></a>
<div class="addfile"><h4 style="background-color: #eee; color: inherit; margin: 1em 0; padding: 1.3em; font-size: 115%">Added: sites/trunk/wordpress.tv/public_html/wp-content/themes/wptv2/breadcrumbs.php</h4>
<pre class="diff"><span>
<span class="info" style="display: block; padding: 0 10px; color: #888">--- sites/trunk/wordpress.tv/public_html/wp-content/themes/wptv2/breadcrumbs.php                              (rev 0)
+++ sites/trunk/wordpress.tv/public_html/wp-content/themes/wptv2/breadcrumbs.php        2014-12-03 20:10:33 UTC (rev 1024)
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -0,0 +1,14 @@
</span><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+<?php
+/**
+ * Breadcrumbs template part, use with get_template_part()
+ */
+
+global $wptv;
+?>
+<div class="breadcrumb">
+       <a href="<?php echo esc_attr( home_url() );?>">Home</a>
+       <?php
+               $wptv->the_category( '<span class="arrow">&raquo;</span>' );
+               $wptv->the_event( '<span class="arrow">&raquo;</span>' );
+       ?>
+</div>
</ins></span></pre></div>
<a id="sitestrunkwordpresstvpublic_htmlwpcontentthemeswptv2categorywordcamptvphp"></a>
<div class="addfile"><h4 style="background-color: #eee; color: inherit; margin: 1em 0; padding: 1.3em; font-size: 115%">Added: sites/trunk/wordpress.tv/public_html/wp-content/themes/wptv2/category-wordcamptv.php</h4>
<pre class="diff"><span>
<span class="info" style="display: block; padding: 0 10px; color: #888">--- sites/trunk/wordpress.tv/public_html/wp-content/themes/wptv2/category-wordcamptv.php                              (rev 0)
+++ sites/trunk/wordpress.tv/public_html/wp-content/themes/wptv2/category-wordcamptv.php        2014-12-03 20:10:33 UTC (rev 1024)
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -0,0 +1,74 @@
</span><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+<?php
+/*
+ * WordCampTV Category Archives
+ *
+ * Requires a special display, hence the template.
+ */
+
+$featured = new WP_Query( array(
+       'posts_per_page' => 6,
+       'category_name'  => 'wordcamptv',
+       'tag'            => 'featured',
+) );
+
+get_header();
+global $wptv;
+?>
+<div class="wptv-hero group">
+       <div class="container">
+
+               <h2 class="page-title"><?php single_term_title(); ?></h2>
+               <div class="desc"><?php echo category_description(); ?></div>
+
+               <?php if ( $featured->have_posts() ) : $featured->the_post(); ?>
+                       <div class="main-video">
+                               <?php $wptv->the_video(); ?>
+                               <h3>
+                                       <a href="<?php the_permalink() ?>" rel="bookmark" title="<?php the_title_attribute(); ?>" class="video-title"><?php the_title(); ?></a>
+                                       <?php $wptv->the_event( '<strong class="video-event">', '</strong>' ); ?>
+                               </h3>
+                       </div><!-- .main-video -->
+               <?php endif; // have_posts ?>
+
+               <div class="secondary-videos">
+                       <ul>
+
+                               <?php while ( $featured->have_posts() ) : $featured->the_post(); ?>
+                               <li class="group">
+                                       <a href="<?php the_permalink() ?>" rel="bookmark" title="<?php the_title_attribute(); ?>" >
+                                               <span class="video-thumbnail">
+                                                       <img src="<?php $wptv->the_video( true, true ); ?>" />
+                                               </span>
+                                               <span class="video-title"><?php the_title(); ?></span>
+                                               <?php $wptv->the_event( '<strong class="video-event">', '</strong>' ); ?>
+                                       </a>
+                               </li>
+                               <?php endwhile; // have_posts ?>
+
+                       </ul>
+               </div><!-- .secondary-videos -->
+       </div><!-- .container -->
+</div><!-- .wptv-hero -->
+
+<div class="container">
+       <div class="primary-content">
+
+               <?php
+                       /**
+                        * The following is a very special navigation menu. It
+                        * should contain Event taxonomy items only, and will list
+                        * them with videos from the chosen event.
+                        */
+                       wp_nav_menu( array(
+                               'theme_location' => 'featured_wordcamps',
+                               'depth'          => 1,
+                               'walker'         => new WordCampTV_Walker_Nav_Menu,
+                       ) );
+               ?>
+
+       </div><!-- .primary-content -->
+       <?php get_sidebar( 'wordcamptv' ); ?>
+</div><!-- container -->
+
+<?php
+get_footer();
</ins></span></pre></div>
<a id="sitestrunkwordpresstvpublic_htmlwpcontentthemeswptv2categoryphp"></a>
<div class="addfile"><h4 style="background-color: #eee; color: inherit; margin: 1em 0; padding: 1.3em; font-size: 115%">Added: sites/trunk/wordpress.tv/public_html/wp-content/themes/wptv2/category.php</h4>
<pre class="diff"><span>
<span class="info" style="display: block; padding: 0 10px; color: #888">--- sites/trunk/wordpress.tv/public_html/wp-content/themes/wptv2/category.php                         (rev 0)
+++ sites/trunk/wordpress.tv/public_html/wp-content/themes/wptv2/category.php   2014-12-03 20:10:33 UTC (rev 1024)
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -0,0 +1,95 @@
</span><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+<?php
+/*
+ * Category Archives
+ *
+ * Used for categories display, especially the to-do category.
+ * Fallback to others as well.
+ */
+
+global $wp_query, $wptv;
+get_header();
+
+/* The below if statement makes sure the hero is hidden on:
+ * - Second, third, etc pages.
+ * - If found posts is not more than 6
+ */
+
+if ( get_query_var( 'paged' ) < 2 && $wp_query->found_posts > 6 ) : ?>
+<div class="wptv-hero group">
+       <div class="container">
+
+               <h2 class="page-title"><?php single_term_title(); ?></h2>
+               <div class="desc"><?php echo category_description(); ?></div>
+
+               <?php if ( have_posts() ) : the_post(); ?>
+
+                       <div class="main-video">
+                               <?php $wptv->the_video(); ?>
+                               <h3>
+                                       <a href="<?php the_permalink(); ?>" rel="bookmark" title="<?php echo esc_attr( sprintf( __('Permanent Link to %s', 'wptv'), get_the_title() ) ); ?>" class="video-title"><?php the_title(); ?></a>
+                                       <?php $wptv->the_event( '<strong class="video-event">', '</strong>' ); ?>
+                               </h3>
+                       </div><!-- .main-video -->
+
+               <?php endif; // have_posts ?>
+
+               <div class="secondary-videos">
+                       <ul>
+                               <?php while ( have_posts() && $wp_query->current_post < 5 ) : the_post(); ?>
+                               <li class="group">
+                                       <a href="<?php the_permalink(); ?>" rel="bookmark" title="<?php echo esc_attr( sprintf(__('Permanent Link to %s', ''), get_the_title() ) ); ?>" >
+                                               <span class="video-thumbnail">
+                                                       <img src="<?php $wptv->the_video( true, true ); ?>" />
+                                               </span>
+                                               <span class="video-title"><?php the_title(); ?></span>
+                                               <?php $wptv->the_event( '<strong class="video-event">', '</strong>' ); ?>
+                                       </a>
+                               </li>
+                               <?php endwhile; ?>
+                       </ul>
+               </div><!-- .secondary-videos -->
+
+       </div>
+</div><!-- .wptv-hero -->
+
+<?php else : // get_query_var(paged) < 2 ?>
+
+<div class="wptv-hero group">
+       <div class="container">
+               <h2 class="page-title"><?php single_cat_title(); ?></h2>
+               <div class="desc"><?php echo category_description(); ?></div>
+       </div>
+</div>
+
+<?php endif; // paged ?>
+
+<div class="container">
+       <div class="primary-content">
+
+               <?php if ( have_posts() ) : ?>
+
+                       <h3><?php esc_html_e( 'Latest Videos', 'wptv' ); ?></h3>
+                       <ul class="video-list four-col">
+
+                               <?php while ( have_posts() ) : the_post() ; ?>
+                               <li>
+                                       <a href="<?php the_permalink(); ?>">
+                                               <span class="video-thumbnail"><?php $wptv->the_video_image( 50, null, false ); ?></span>
+                                               <span class="video-title"><?php the_title(); ?></span>
+                                       </a>
+                               </li>
+                               <?php endwhile; ?>
+
+                       </ul>
+
+                       <?php get_template_part( 'pagination' ); ?>
+
+               <?php else : // have_posts ?>
+                       <p><?php esc_html_e( 'Sorry, no posts were found in this category.', 'wptv' ); ?></p>
+               <?php endif; ?>
+
+       </div><!-- .primary-content -->
+       <?php get_sidebar(); ?>
+</div><!-- .container -->
+
+<?php get_footer(); ?>
</ins><span class="cx" style="display: block; padding: 0 10px">\ No newline at end of file
</span></span></pre></div>
<a id="sitestrunkwordpresstvpublic_htmlwpcontentthemeswptv2commentsphp"></a>
<div class="addfile"><h4 style="background-color: #eee; color: inherit; margin: 1em 0; padding: 1.3em; font-size: 115%">Added: sites/trunk/wordpress.tv/public_html/wp-content/themes/wptv2/comments.php</h4>
<pre class="diff"><span>
<span class="info" style="display: block; padding: 0 10px; color: #888">--- sites/trunk/wordpress.tv/public_html/wp-content/themes/wptv2/comments.php                         (rev 0)
+++ sites/trunk/wordpress.tv/public_html/wp-content/themes/wptv2/comments.php   2014-12-03 20:10:33 UTC (rev 1024)
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -0,0 +1,40 @@
</span><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+<?php
+/**
+ * WordPress.tv Comments Template
+ * @uses global $wptv->list_comments
+ */
+
+/*
+ * If the current post is protected by a password and
+ * the visitor has not yet entered the password we will
+ * return early without loading the comments.
+ */
+if ( post_password_required() ) {
+       return;
+}
+
+global $wptv;
+
+if ( have_comments() ) :
+?>
+       <h3 id="comments">
+               <?php
+                       printf( _nx( 'One response on &ldquo;%2$s&rdquo;', '%1$s responses on &ldquo;%2$s&rdquo;', get_comments_number(), 'comments title', 'wptv' ),
+                               number_format_i18n( get_comments_number() ), '<span>' . get_the_title() . '</span>' );
+               ?>
+       </h3>
+
+       <ol class="commentlist">
+               <?php wp_list_comments( array( 'callback' => array( $wptv, 'list_comments' ) ) ); ?>
+       </ol>
+<?php
+endif;
+
+if ( ! comments_open() && get_comments_number() && post_type_supports( get_post_type(), 'comments' ) ) :
+?>
+       <p class="nocomments"><?php esc_html_e( 'Comments are closed.', 'wptv' ); ?></p>
+<?php
+
+endif;
+
+comment_form();
</ins></span></pre></div>
<a id="sitestrunkwordpresstvpublic_htmlwpcontentthemeswptv2footerphp"></a>
<div class="addfile"><h4 style="background-color: #eee; color: inherit; margin: 1em 0; padding: 1.3em; font-size: 115%">Added: sites/trunk/wordpress.tv/public_html/wp-content/themes/wptv2/footer.php</h4>
<pre class="diff"><span>
<span class="info" style="display: block; padding: 0 10px; color: #888">--- sites/trunk/wordpress.tv/public_html/wp-content/themes/wptv2/footer.php                           (rev 0)
+++ sites/trunk/wordpress.tv/public_html/wp-content/themes/wptv2/footer.php     2014-12-03 20:10:33 UTC (rev 1024)
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -0,0 +1,20 @@
</span><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+<?php
+/**
+ * The Footer Template
+ *
+ * The header.php template opens the main container with a #page
+ * element, which is closed in the footer element. Everything else
+ * should go between the two.
+ */
+?>
+       <div id="footer">
+               <div class="container">
+                       <?php wp_nav_menu( array( 'theme_location' => 'footer', 'depth' => 1, 'link_after' => '<span class="dot">&#8226;</span>' ) ); ?>
+                       <p class="automattic">An <a href="http://automattic.com/"><img src="data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4NCjwhLS0gR2VuZXJhdG9yOiBBZG9iZSBJbGx1c3RyYXRvciAxNy4xLjAsIFNWRyBFeHBvcnQgUGx1Zy1JbiAuIFNWRyBWZXJzaW9uOiA2LjAwIEJ1aWxkIDApICAtLT4NCjwhRE9DVFlQRSBzdmcgUFVCTElDICItLy9XM0MvL0RURCBTVkcgMS4xLy9FTiIgImh0dHA6Ly93d3cudzMub3JnL0dyYXBoaWNzL1NWRy8xLjEvRFREL3N2ZzExLmR0ZCI+DQo8c3ZnIHZlcnNpb249IjEuMSIgaWQ9IkxvZ28iIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiIHg9IjBweCIgeT0iMHB4Ig0KCSB2aWV3Qm94PSIwIDAgNDk0LjQgMzguMiIgZW5hYmxlLWJhY2tncm91bmQ9Im5ldyAwIDAgNDk0LjQgMzguMiIgeG1sOnNwYWNlPSJwcmVzZXJ2ZSI+DQo8cGF0aCBmaWxsPSIjODg4ODg4IiBkPSJNMTc5LjMsMzguMmMtMTIuNiwwLTIwLjctOS4xLTIwLjctMTguNXYtMS4yYzAtOS42LDguMi0xOC41LDIwLjctMTguNWMxMi42LDAsMjAuOCw4LjksMjAuOCwxOC41djEuMg0KCUMyMDAuMSwyOS4xLDE5MS45LDM4LjIsMTc5LjMsMzguMnogTTE5My4zLDE4LjZjMC02LjktNS0xMy0xNC4xLTEzYy05LjEs
 MC0xNCw2LjEtMTQsMTN2MC45YzAsNi45LDUsMTMuMSwxNCwxMy4xDQoJYzkuMSwwLDE0LjEtNi4yLDE0LjEtMTMuMVYxOC42eiIvPg0KPHBhdGggZmlsbD0iIzg4ODg4OCIgZD0iTTM3LjEsMzYuOEwzMi40LDI4SDExLjZMNywzNi44SDBMMTkuMiwxLjNoNS41bDE5LjUsMzUuNUgzNy4xeiBNMjEuOCw4LjJsLTcuNywxNC45aDE1LjdMMjEuOCw4LjJ6Ii8+DQo8cGF0aCBmaWxsPSIjODg4ODg4IiBkPSJNNzQuNiwzOC4yYy0xMi43LDAtMTguNy02LjktMTguNy0xNi4yVjEuM2g2LjZ2MjAuOWMwLDYuNiw0LjMsMTAuNSwxMi41LDEwLjVjOC40LDAsMTEuOS0zLjksMTEuOS0xMC41VjEuMw0KCWg2LjdWMjJDOTMuNiwzMC44LDg3LjksMzguMiw3NC42LDM4LjJ6Ii8+DQo8cGF0aCBmaWxsPSIjODg4ODg4IiBkPSJNMTMwLjcsNi44djMwaC02Ljd2LTMwaC0xNS41VjEuM2gzNy43djUuNUgxMzAuN3oiLz4NCjxwYXRoIGZpbGw9IiM4ODg4ODgiIGQ9Ik0yNTkuNSwzNi44VjguN2wtMS44LDMuMWwtMTQuOSwyNWgtMy4zbC0xNC43LTI1bC0xLjgtMy4xdjI4LjFoLTYuNVYxLjNoOS4ybDE0LDI0LjRsMS43LDNsMS43LTNMMjU3LDEuMw0KCWg5LjF2MzUuNUgyNTkuNXoiLz4NCjxwYXRoIGZpbGw9IiM4ODg4ODgiIGQ9Ik0zMTYuNSwzNi44bC00LjctOC44SDI5MWwtNC41LDguOGgtN2wxOS4yLTM1LjVoNS41bDE5LjUsMzUuNUgzMTYuNXogTTMwMS4yLDguMmwtNy43LDE0LjloMTUuN0wzMDEuMiw4LjJ6DQoJIi8+DQo8cGF0aCBma
 WxsPSIjODg4ODg4IiBkPSJNMzUwLjYsNi44djMwaC02Ljd2LTMwaC0xNS41VjEuM2gzNy43djUuNUgzNTAuNnoiLz4NCjxwYXRoIGZpbGw9IiM4ODg4ODgiIGQ9Ik0zOTkuNSw2Ljh2MzBoLTYuN3YtMzBoLTE1LjVWMS4zSDQxNXY1LjVIMzk5LjV6Ii8+DQo8cGF0aCBmaWxsPSIjODg4ODg4IiBkPSJNNDMxLjQsMzYuOFY0LjZjMi43LDAsMy43LTEuNCwzLjctMy40aDIuOHYzNS41SDQzMS40eiIvPg0KPHBhdGggZmlsbD0iIzg4ODg4OCIgZD0iTTQ5MC4yLDExLjNjLTMuMi0yLjktNy45LTUuNy0xNC4yLTUuN2MtOS41LDAtMTQuOCw2LjUtMTQuOCwxMy4zdjAuN2MwLDYuNyw1LjQsMTMsMTUuMywxMw0KCWM1LjksMCwxMC44LTIuOCwxMy45LTUuN2w0LDQuMmMtMy45LDMuOC0xMC41LDcuMS0xOC4zLDcuMWMtMTMuNCwwLTIxLjYtOC43LTIxLjYtMTguM3YtMS4yYzAtOS42LDguOS0xOC43LDIxLjktMTguNw0KCWM3LjUsMCwxNC4zLDMuMSwxOCw3LjFMNDkwLjIsMTEuM3oiLz4NCjxwYXRoIGZpbGw9IiM4ODg4ODgiIGQ9Ik0xODMuNiwxMi40YzEuMiwwLjgsMS41LDIuNCwwLjgsMy42bC02LjEsOS40Yy0wLjgsMS4yLTIuNCwxLjYtMy42LDAuOGwwLDBjLTEuMi0wLjgtMS41LTIuNC0wLjgtMy42DQoJbDYuMS05LjRDMTgwLjgsMTEuOSwxODIuNCwxMS42LDE4My42LDEyLjRMMTgzLjYsMTIuNHoiLz4NCjwvc3ZnPg0K" alt="Automattic" width="165" height="14" 
 /></a> <?php $words = array( 'Production', 'Joint', 'Medley', 'Experiment', 'Ruckus', 'Invention', 'Creation', 'Thingamajig', 'Opus', 'Brainchild', 'Contraption' ); echo $words[ mt_rand( 0, count( $words) -1 ) ]; ?></p>
+               </div>
+       </div><!-- #footer -->
+</div><!-- #page -->
+
+<?php wp_footer(); ?>
+</body>
+</html>
</ins></span></pre></div>
<a id="sitestrunkwordpresstvpublic_htmlwpcontentthemeswptv2frontpagephp"></a>
<div class="addfile"><h4 style="background-color: #eee; color: inherit; margin: 1em 0; padding: 1.3em; font-size: 115%">Added: sites/trunk/wordpress.tv/public_html/wp-content/themes/wptv2/front-page.php</h4>
<pre class="diff"><span>
<span class="info" style="display: block; padding: 0 10px; color: #888">--- sites/trunk/wordpress.tv/public_html/wp-content/themes/wptv2/front-page.php                               (rev 0)
+++ sites/trunk/wordpress.tv/public_html/wp-content/themes/wptv2/front-page.php 2014-12-03 20:10:33 UTC (rev 1024)
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -0,0 +1,128 @@
</span><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+<?php
+/**
+ * WordPress.tv Front Page Template
+ */
+
+$featured_params = array(
+       'posts_per_page' => 1,
+       'tag'            => 'featured',
+);
+if ( $sticky_posts = get_option( 'sticky_posts' ) ) {
+       $featured_params['post__in'] = $sticky_posts;
+}
+$featured = new WP_Query( $featured_params );
+
+global $wptv;
+get_header(); ?>
+
+<div class="wptv-hero group">
+       <div class="container">
+
+               <?php while ( $featured->have_posts() ) : $featured->the_post(); ?>
+               <div class="main-video">
+                       <?php $wptv->the_video(); ?>
+                       <h3>
+                               <a href="<?php the_permalink() ?>" rel="bookmark" title="<?php the_title_attribute(); ?>" class="video-title"><?php the_title(); ?></a>
+                               <?php $wptv->the_event( '<strong class="video-event">', '</strong>' ); ?>
+               </h3>
+               </div><!-- .main-video -->
+               <?php endwhile; // $featured->have_posts ?>
+
+               <div class="secondary-videos">
+                       <h3>
+                               <?php esc_html_e( 'WordCampTV', 'wptv' ); ?>
+                               <a href="<?php echo home_url( '/category/wordcamptv/' ); ?>" class="view-more"><?php _e( 'More &rarr;', 'wptv' ); ?></a>
+                       </h3>
+                       <ul>
+                               <?php
+                                       $featured = new WP_Query( array( // WordCampTV Featured
+                                               'posts_per_page' => 4,
+                                               'post__not_in'   => array( get_the_id() ), // In case the above video is the same
+                                               'category_name'  => 'wordcamptv',
+                                               'tag'            => 'featured',
+                                       ) );
+
+                                       while ( $featured->have_posts() ) :
+                                               $featured->the_post();
+                               ?>
+
+                               <li class="group">
+                                       <a href="<?php the_permalink(); ?>" rel="bookmark" title="<?php the_title_attribute(); ?>" >
+                                               <span class="video-thumbnail">
+                                                       <img src="<?php $wptv->the_video( true, true ); ?>" />
+                                               </span>
+                                               <span class="video-title"><?php the_title(); ?></span>
+                                               <?php $wptv->the_event( '<strong class="video-event">', '</strong>' ); ?>
+                                       </a>
+                               </li>
+
+                               <?php
+                                       endwhile; // $featured->have_posts
+                                       unset( $featured );
+                               ?>
+                       </ul>
+               </div><!-- .secondary-videos -->
+
+       </div><!-- .container -->
+</div><!-- .wptv-hero -->
+
+<div class="container">
+       <div class="primary-content">
+
+               <!-- Latest Videos -->
+               <?php
+                       if ( have_posts() ) :
+               ?>
+               <h3><?php esc_html_e( 'Latest Videos', 'wptv' ); ?></h3>
+               <ul class="video-list four-col">
+
+                       <?php while ( have_posts() ) : the_post(); ?>
+                       <li>
+                               <a href="<?php the_permalink(); ?>">
+                                       <span class="video-thumbnail"><?php $wptv->the_video_image( 50, null, false ); ?></span>
+                                       <span class="video-title"><?php the_title(); ?></span>
+                               </a>
+                       </li>
+                       <?php endwhile; ?>
+
+               </ul>
+               <?php
+                       endif; // $latest->have_posts
+
+                       // Popular Videos
+                       $popular = new WP_Query( array(
+                               'posts_per_page' => 8,
+                               'meta_key'       => 'wptv_post_views',
+                               'orderby'        => 'meta_value_num',
+                               'order'          => 'DESC',
+                               'date_query'     => array(
+                                       'after' => '-180 days',
+                               ),
+                       ) );
+
+                       if ( $popular->have_posts() ) :
+               ?>
+               <h3><?php esc_html_e( 'Popular Videos', 'wptv' ); ?></h3>
+               <ul class="video-list four-col">
+
+                       <?php while ( $popular->have_posts() ) : $popular->the_post(); ?>
+                       <li>
+                               <a href="<?php the_permalink(); ?>">
+                                       <span class="video-thumbnail"><?php $wptv->the_video_image( 50, null, false ); ?></span>
+                                       <span class="video-title"><?php the_title(); ?></span>
+                               </a>
+                       </li>
+                       <?php endwhile; ?>
+
+               </ul>
+               <?php
+                       endif; // $popular->have_posts
+                       unset( $popular );
+               ?>
+
+       </div><!-- .primary-content -->
+       <?php get_sidebar(); ?>
+</div><!-- .container-->
+
+<?php
+get_footer();
</ins></span></pre></div>
<a id="sitestrunkwordpresstvpublic_htmlwpcontentthemeswptv2functionsphp"></a>
<div class="addfile"><h4 style="background-color: #eee; color: inherit; margin: 1em 0; padding: 1.3em; font-size: 115%">Added: sites/trunk/wordpress.tv/public_html/wp-content/themes/wptv2/functions.php</h4>
<pre class="diff"><span>
<span class="info" style="display: block; padding: 0 10px; color: #888">--- sites/trunk/wordpress.tv/public_html/wp-content/themes/wptv2/functions.php                                (rev 0)
+++ sites/trunk/wordpress.tv/public_html/wp-content/themes/wptv2/functions.php  2014-12-03 20:10:33 UTC (rev 1024)
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -0,0 +1,754 @@
</span><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+<?php
+
+/**
+ * WordPress.tv Functions
+ */
+class WordPressTV_Theme {
+       function __construct() {
+               if ( apply_filters( 'wptv_setup_theme', true ) ) {
+                       // Load plugins and setup theme
+                       require_once get_template_directory() . '/plugins/wordpresstv-oembed/wordpresstv-oembed.php';
+                       require_once get_template_directory() . '/plugins/wordpresstv-unisubs/wordpresstv-unisubs.php';
+                       require_once get_template_directory() . '/plugins/wordpresstv-upload-subtitles/wordpresstv-upload-subtitles.php';
+
+                       add_action( 'after_setup_theme', array( $this, 'setup' ) );
+               }
+       }
+
+       /**
+        * Runs during after_setup_theme.
+        */
+       function setup() {
+               add_action( 'widgets_init', array( $this, 'widgets_init' ) );
+               add_action( 'init', array( $this, 'register_taxonomies' ), 0 );
+               add_action( 'pre_get_posts', array( $this, 'posts_per_page' ) );
+               add_action( 'init', array( $this, 'improve_search' ) );
+               add_action( 'publish_post', array( $this, 'publish_post' ), 10, 1 );
+               add_action( 'wp_footer', array( $this, 'videopress_flash_params' ) );
+               add_action( 'transition_post_status', array( $this, 'transition_post_status' ), 10, 2 );
+
+               add_filter( 'pre_option_blog_upload_space', array( $this, 'blog_upload_space' ) );
+
+               register_nav_menus( array(
+                       'primary'            => __( 'Primary Menu', 'wptv' ),
+                       'footer'             => __( 'Footer Menu', 'wptv' ),
+                       'featured_wordcamps' => __( 'Featured WordCamps', 'wptv' ),
+               ) );
+       }
+
+       /**
+        * Different posts_per_page settings for different views. Runs during pre_get_posts.
+        */
+       function posts_per_page( $query ) {
+               $posts_per_page = $query->get( 'posts_per_page' );
+               if ( ! $query->is_main_query() || ! empty( $posts_per_page ) ) {
+                       return;
+               }
+
+               $queried_object = $query->get_queried_object();
+
+               if ( $query->is_front_page() ) { // category archives
+                       $query->set( 'posts_per_page', 8 );
+               } elseif ( $query->is_category ) { // category archives
+                       $query->set( 'posts_per_page', 22 );
+               } elseif ( $query->is_tax && $queried_object->taxonomy == 'event' ) { // event taxonomy
+                       $query->set( 'posts_per_page', 22 );
+               } elseif ( $query->is_archive || $query->is_search ) {
+                       $query->set( 'posts_per_page', 10 );
+               } else {
+                       $query->set( 'posts_per_page', 22 );
+               }
+       }
+
+       /**
+        * Registers taxonomies, runs during init
+        */
+       function register_taxonomies() {
+               register_taxonomy( 'producer', array( 'post' ), array(
+                       'label'    => __( 'Producer', 'wptv' ),
+                       'template' => __( 'Producer: %l.', 'wptv' ),
+                       'helps'    => __( 'Separate producers with commas.', 'wptv' ),
+                       'sort'     => true,
+                       'args'     => array( 'orderby' => 'term_order' ),
+                       'rewrite'  => array( 'slug' => 'producer' ),
+               ) );
+
+               register_taxonomy( 'speakers', array( 'post' ), array(
+                       'label'    => __( 'Speakers', 'wptv' ),
+                       'template' => __( 'Speakers: %l.', 'wptv' ),
+                       'helps'    => __( 'Separate speakers with commas.', 'wptv' ),
+                       'sort'     => true,
+                       'args'     => array( 'orderby' => 'term_order' ),
+                       'rewrite'  => array( 'slug' => 'speakers' ),
+               ) );
+
+               register_taxonomy( 'flavor', array( 'post' ), array(
+                       'label'    => __( 'Flavor', 'wptv' ),
+                       'template' => __( 'Flavor: %l.', 'wptv' ),
+                       'helps'    => __( 'Separate flavors with commas.', 'wptv' ),
+                       'sort'     => true,
+                       'args'     => array( 'orderby' => 'term_order' ),
+                       'rewrite'  => array( 'slug' => 'flavor' ),
+               ) );
+
+               register_taxonomy( 'language', array( 'post' ), array(
+                       'label'    => __( 'Language', 'wptv' ),
+                       'template' => __( 'Language: %l.', 'wptv' ),
+                       'helps'    => __( 'Separate languages with commas.', 'wptv' ),
+                       'sort'     => true,
+                       'args'     => array( 'orderby' => 'term_order' ),
+                       'rewrite'  => array( 'slug' => 'language' ),
+               ) );
+
+               register_taxonomy( 'event', array( 'post' ), array(
+                       'label'    => __( 'Event', 'wptv' ),
+                       'template' => __( 'Event: %l.', 'wptv' ),
+                       'helps'    => __( 'Enter event', 'wptv' ),
+                       'sort'     => true,
+                       'args'     => array( 'orderby' => 'term_order' ),
+                       'rewrite'  => array( 'slug' => 'event' ),
+               ) );
+       }
+
+       /**
+        * Runs during widgets_init, adds some sidebars.
+        */
+       function widgets_init() {
+               register_sidebars( 1 );
+               register_sidebar( array(
+                       'name'         => __( 'WordCampTV Sidebar', 'wptv' ),
+                       'id'           => 'wordcamptv-sidebar',
+                       'description'  => __( 'Widgets in this area will be shown on the WordCampTV landing page.', 'wptv' ),
+                       'before_title' => '<h3>',
+                       'after_title'  => '</h3>',
+               ) );
+       }
+
+       /**
+        * Filters the blog_upload_space option
+        */
+       function blog_upload_space() {
+               return 1024 * 1024 * 10; // 10 terabytes
+       }
+
+       /**
+        * Runs during publish_post
+        *
+        * Since a lot of queries depend on the wptv_post_views meta
+        * key, make sure that every published post has one.
+        *
+        * @param int $post_id Post ID.
+        */
+       function publish_post( $post_id ) {
+               if ( ! get_post_meta( $post_id, 'wptv_post_views', true ) ) {
+                       update_post_meta( $post_id, 'wptv_post_views', 0 );
+               }
+       }
+
+       /**
+        * Activates the improved search, but not in admin.
+        */
+       function improve_search() {
+               if ( is_admin() ) {
+                       return;
+               }
+
+               add_filter( 'posts_search', array( $this, 'search_posts_search' ), 10, 2 );
+               add_action( 'pre_get_posts', array( $this, 'search_pre_get_posts' ) );
+       }
+
+       /**
+        * @param WP_Query $query
+        */
+       function search_pre_get_posts( $query ) {
+               if ( ! $query->is_main_query() || ! $query->is_search ) {
+                       return;
+               }
+
+               // Set custom sorting
+               $query->set( 'meta_key', 'wptv_post_views' );
+               $query->set( 'orderby', 'meta_value_num' );
+               $query->set( 'order', 'DESC' );
+       }
+
+       /**
+        * Improved Serach: posts_search filter
+        *
+        * Recreates the search SQL by including a taxonomy search.
+        * Relies on various other filters used once.
+        * @todo optimize the get_tax_query part.
+        *
+        * @param string $search
+        * @param WP_Query $query
+        *
+        * @return string
+        */
+       function search_posts_search( $search, &$query ) {
+               global $wpdb;
+               if ( ! $query->is_main_query() || ! $query->is_search || is_admin() ) {
+                       return $search;
+               }
+
+               // Get the tax query and replace the leading AND with an OR
+               $tax_query = get_tax_sql( $this->get_tax_query( get_query_var( 's' ) ), $wpdb->posts, 'ID' );
+               if ( 'and' == substr( trim( strtolower( $tax_query['where'] ) ), 0, 3 ) ) {
+                       $tax_query['where'] = ' OR ' . substr( trim( $tax_query['where'] ), 3 );
+               }
+
+               // Mostly taken from query.php
+               if ( isset( $query->query_vars['search_terms'] ) ) {
+                       $search = $searchand = '';
+                       $n      = empty( $query->query_vars['exact'] ) ? '%' : '';
+
+                       foreach ( (array) $query->query_vars['search_terms'] as $term ) {
+                               $term = esc_sql( like_escape( $term ) );
+                               $search .= "{$searchand}(($wpdb->posts.post_title LIKE '{$n}{$term}{$n}') OR ($wpdb->posts.post_content LIKE '{$n}{$term}{$n}'))";
+                               $searchand = ' AND ';
+                       }
+
+                       // Combine the search and tax queries.
+                       if ( ! empty( $search ) ) {
+                               // Add the tax search to the query
+                               if ( ! empty( $tax_query['where'] ) ) {
+                                       $search .= $tax_query['where'];
+                               }
+
+                               $search = " AND ({$search}) ";
+                               if ( ! is_user_logged_in() ) {
+                                       $search .= " AND ($wpdb->posts.post_password = '') ";
+                               }
+                       }
+               }
+
+               // These are single-use filters, they delete themselves right after they're used.
+               add_filter( 'posts_join', array( $this, 'search_posts_join' ), 10, 2 );
+               add_filter( 'posts_groupby', array( $this, 'search_posts_groupby' ), 10, 2 );
+
+               return $search;
+       }
+
+       /**
+        * Improved Search: posts_join filter
+        *
+        * This adds the JOIN clause resulting from the taxonomy
+        * search. Make sure this filter runs only once per WP_Query request.
+        *
+        * @param string $join
+        * @param WP_Query $query
+        *
+        * @return string
+        */
+       function search_posts_join( $join, &$query ) {
+               // Make sure this filter doesn't run again.
+               remove_filter( 'posts_join', array( $this, 'search_posts_join' ), 10, 2 );
+
+               if ( $query->is_main_query() ) {
+                       global $wpdb;
+                       $tax_query = get_tax_sql( $this->get_tax_query( get_query_var( 's' ) ), $wpdb->posts, 'ID' );
+                       $join .= $tax_query['join'];
+               }
+
+               return $join;
+       }
+
+       /**
+        * Improved Search: posts_groupby filter
+        *
+        * Searching with taxonomies may include duplicates when
+        * search query matches content and one or more taxonomies.
+        * This filter glues all duplicates. Use only once per WP_Query.
+        *
+        * @param string $group_by
+        * @param WP_Query $query
+        *
+        * @return string
+        */
+       function search_posts_groupby( $group_by, &$query ) {
+               // Never run this again
+               remove_filter( 'posts_groupby', array( $this, 'search_posts_groupby' ), 10, 2 );
+
+               global $wpdb;
+               $group_by = "$wpdb->posts.ID";
+
+               return $group_by;
+       }
+
+       /**
+        * Returns a $tax_query array for an improved search.
+        *
+        * @param string $search
+        *
+        * @return array
+        */
+       function get_tax_query( $search ) {
+               $taxonomies = array(
+                       'producer',
+                       'speakers', /*'flavor', 'language',*/
+                       'event'
+               );
+
+               $terms    = get_terms( $taxonomies, array(
+                       'search' => $search,
+               ) );
+               $term_ids = wp_list_pluck( $terms, 'term_id' );
+
+               $tax_query = array();
+               foreach ( $taxonomies as $taxonomy ) {
+                       $tax_query[] = array(
+                               'taxonomy' => $taxonomy,
+                               'terms'    => $term_ids,
+                       );
+               }
+               $tax_query['relation'] = 'OR';
+
+               return $tax_query;
+       }
+
+       /**
+        * Change VideoPress Params, runs during wp_footer
+        */
+       function videopress_flash_params() {
+               echo '<script type="text/javascript">if(jQuery.VideoPress){jQuery.VideoPress.video.flash.params.wmode="opaque";}</script>';
+       }
+
+       /**
+        * List Comments Callback
+        *
+        * Used with wp_list_comments in the theme files,
+        * fired via the wptv_list_comments callback wrapper.
+        *
+        * @param object $comment
+        * @param array $args
+        * @param int $depth
+        */
+       function list_comments( $comment, $args, $depth ) {
+               $GLOBALS['comment'] = $comment;
+               if ( $comment->comment_type == 'pingback' ) {
+                       return;
+               }
+               ?>
+               <li <?php comment_class(); ?> id="comment-<?php comment_ID(); ?>">
+                       <cite class="authorinfo">
+                               <?php echo get_avatar( $comment, 24 ); ?>
+                               <?php comment_author_link(); ?>
+                       </cite>
+
+                       <br/>
+
+                       <?php if ( $comment->comment_type != 'pingback' ) : ?>
+
+                               <small class="commentmetadata">
+                                       <a href="#comment-<?php comment_ID() ?>" title=""><?php printf( __( '%1$s at %2$s', 'wptv' ), get_comment_date(), get_comment_time() ); ?></a>
+                                       <?php
+                                               edit_comment_link( __( 'edit', 'wptv' ), '&nbsp;&nbsp;', '' );
+                                               echo comment_reply_link( array(
+                                                       'depth'     => $depth,
+                                                       'max_depth' => $args['max_depth'],
+                                                       'before'    => ' | ',
+                                               ) );
+                                       ?>
+                               </small>
+
+                       <?php endif; // comment_type != 'pingback' ?>
+
+                       <div class="commenttext">
+                               <?php if ( $comment->comment_approved == '0' ) : ?>
+                                       <em><?php _e( 'Your comment is awaiting moderation.', 'wptv' ); ?></em>
+                               <?php endif; // comment_approved == 0 ?>
+
+                               <?php comment_text(); ?>
+                       </div>
+                       <div class="clear"></div>
+               </li>
+       <?php
+       }
+
+       /**
+        * Get VodPod Thumbnails, used by the_video_image
+        *
+        * @param string $code
+        *
+        * @return string
+        */
+       function get_vodpod_thumbnails( $code ) {
+               preg_match( '/((Groupvideo|ExternalVideo).[0-9]+)/', $code, $matches );
+               $id = $matches[1];
+
+               if ( ! $id ) {
+                       return get_template_directory_uri() . '/i/notfound.png';
+               }
+
+               // Argh!!
+               $xml = file_get_contents( 'http://api.vodpod.com/api/video/details.xml?video_id=' . $id . '&api_key=03519ea5faf6a6ed' );
+
+               if ( preg_match( '/<large>(.*)<\/large>/', $xml, $thevideoid ) ) {
+                       return $thevideoid[1];
+               } else {
+                       return get_template_directory_uri() . '/i/notfound.png';
+               }
+       }
+
+       /**
+        * Renders the video or a video thumbnail
+        *
+        * @param bool $thumb
+        * @param bool $no_html
+        */
+       function the_video( $thumb = false, $no_html = false ) {
+               $image = $video = '';
+               global $post, $originalcontent;
+               $originalcontent = $post->post_content;
+
+               remove_filter( 'the_content', array( $this, 'remove_shortcodes' ) );
+
+               preg_match_all( '/\[wpvideo +([a-zA-Z0-9,\#,\&,\/,;,",=, ]*?)\]/i', $post->post_content, $matches );
+               foreach ( $matches[1] as $key => $code ) {
+
+                       preg_match( '/([0-9A-Za-z]+)/i', $code, $m );
+                       $guid = $m[1];
+
+                       $image = '';
+                       if ( function_exists( 'video_image_url_by_guid' ) ) {
+                               $image = video_image_url_by_guid( $guid, 'fmt_dvd' ); //dvd image has width = 640
+                       }
+                       $video = apply_filters( 'the_content', '[wpvideo ' . $guid . ' w=605]' );
+
+                       /*
+                       // Comment out the $video= line above and uncomment the following code to enable Unisubs
+                       $permalink = get_permalink( $post->ID );
+                       $video = <<<HTML
+                       <script type="text/javascript" src="http://unisubs.example.com:8000/site_media/embed.js">
+                       ({
+                               "video_url": "$permalink",
+                               "video_config": {
+                                       "width": 648,
+                                       "height": 425
+                               }
+                       })
+                       </script>
+       HTML;
+                       $video .= apply_filters( 'the_content', '' );*/
+               }
+
+               preg_match_all( '|\[slideshare (.+?)]|ie', $post->post_content, $matches );
+               foreach ( $matches[1] as $key => $code ) {
+                       $code = '[slideshare ' . $code . ']';
+                       if ( $thumb ) {
+                               preg_match( '/id=([0-9]+).*/', $code, $matches );
+                               $id    = $matches[1];
+                               $ssxml = file_get_contents( 'http://www.slideshare.net/api/2/get_slideshow/?slideshow_id=' . $id . '&api_key=sM0rzJvp&ts=' . time() . '&hash=' . sha1( 'vHs2uii6' . time() ) );
+                               preg_match( '/<ThumbnailURL>(.+)<\/ThumbnailURL>/', $ssxml, $matches );
+                               $image = $matches[1];
+                       } else {
+                               $slideshare = apply_filters( 'the_content', $code );
+                               $slideshare = preg_replace( '/height\=\'[0-9]+?\'/', "height='430'", $slideshare );
+                               $video      = str_replace( "width='425'", "width='648'", $slideshare );
+                       }
+               }
+
+               preg_match_all( '|\[vodpod (.+?)]|ie', $post->post_content, $matches );
+               foreach ( $matches[1] as $key => $code ) {
+                       $code   = '[vodpod ' . $code . ']';
+                       $vodpod = apply_filters( 'the_content', $code );
+                       $id     = trim( str_replace( '</div>','', preg_replace( '/.*key\=([^&]+)&.*/', '$1', $vodpod ) ) );
+
+                       $image = $this->get_vodpod_thumbnails( $code );
+                       $video = $vodpod;
+               }
+
+               if ( $thumb ) {
+                       if ( ! $no_html ) {
+                               $image = '<img width="650" src="' . esc_url( $image ) . '" alt="' . esc_attr( $post->post_title ) . '" />';
+                       }
+                       echo $image;
+               } else {
+                       echo $video;
+               }
+               add_filter( 'the_content', array( $this, 'remove_shortcodes' ) );
+       }
+
+       /**
+        * Outputs the video image
+        *
+        * @param int $h
+        * @param int $w
+        * @param bool $arrow
+        * @param bool $html_code
+        */
+       function the_video_image( $h = 196, $w = 400, $arrow = true, $html_code = true ) {
+               $ret = '';
+               global $post;
+               remove_filter( 'the_content', array( $this, 'remove_shortcodes' ) );
+
+               preg_match_all( '/\[wpvideo +([a-zA-Z0-9,\#,\&,\/,;,",=, ]*?)\]/i', $post->post_content, $matches );
+               foreach ( $matches[1] as $key => $code ) {
+                       preg_match( '/([0-9A-Za-z]+)/i', $code, $m );
+                       $guid = $m[1];
+                       if ( function_exists( 'video_image_url_by_guid' ) ) {
+                               $ret = video_image_url_by_guid( $guid, 'fmt_dvd' );
+                       }
+               }
+
+               preg_match_all( '|\[wporg-screencast (.+?)]|ie', $post->post_content, $matches );
+               foreach ( $matches[1] as $key => $code ) {
+                       $wporg = apply_filters( 'the_content', '[wporg-screencast ' . $code . ']' );
+                       $ret   = $wporg;
+               }
+
+               preg_match_all( '|\[slideshare (.+?)]|ie', $post->post_content, $matches );
+               foreach ( $matches[1] as $key => $code ) {
+                       $code = '[slideshare ' . $code . ']';
+
+                       preg_match( '/id=([0-9]+).*/', $code, $matches );
+                       $id    = $matches[1];
+                       $url   = 'http://www.slideshare.net/api/2/get_slideshow/?slideshow_id=' . $id . '&api_key=sM0rzJvp&ts=' . time() . '&hash=' . sha1( 'vHs2uii6' . time() );
+                       $ssxml = wp_remote_retrieve_body( wp_remote_get( esc_url_raw( $url ) ) );
+                       preg_match( '/<ThumbnailURL>(.+)<\/ThumbnailURL>/', $ssxml, $matches );
+                       $ret = $matches[1];
+               }
+
+               preg_match_all( '|\[vodpod (.+?)]|ie', $post->post_content, $matches );
+               foreach ( $matches[1] as $key => $code ) {
+                       $code = '[vodpod ' . $code . ']';
+                       $ret  = $this->get_vodpod_thumbnails( $code );
+               }
+
+               if ( $arrow ) {
+                       ?><a href="<?php the_permalink() ?>" class="showarrow arrow"><?php the_title(); ?></a><?php
+               }
+               if ( $html_code ) {
+                       $ret = '<img src="' . $ret . '" alt="' . esc_attr( $post->post_title ) . '" />';
+               }
+               echo $ret;
+
+               add_filter( 'the_content', array( $this, 'remove_shortcodes' ) );
+       }
+
+       /**
+        * Removes shortcodes from $originalcontent global
+        *
+        * @param string $content
+        *
+        * @return mixed
+        */
+       function remove_shortcodes( $content ) {
+               global $originalcontent;
+
+               return preg_replace( '/\[wpvideo +([a-zA-Z0-9,\#,\&,\/,;,",=, ]*?)\]/i', '', $originalcontent );
+       }
+
+       /**
+        * Returns the home URL
+        *
+        * @param string $path
+        *
+        * @return mixed|void
+        */
+       public function home_url( $path = '' ) {
+               return apply_filters( 'wptv_home_url', home_url( $path ), $path );
+       }
+
+       /**
+        * Prints a single category with custom priorities.
+        *
+        * @param string $before
+        */
+       public function the_category( $before = '' ) {
+               foreach ( array( 'wordcamptv', 'how-to' ) as $category_slug ) {
+                       $category = get_category_by_slug( $category_slug );
+
+                       if ( in_category( $category ) ) {
+                               $link = get_category_link( $category );
+                               echo $before . ' <a href="' . esc_url( $link ) . '">' . esc_html( $category->name ) . '</a>';
+                               break; // only one category is printed
+                       }
+               }
+       }
+
+       /**
+        * Prints a single event.
+        *
+        * @param string $before
+        * @param string $after
+        */
+       public function the_event( $before = '', $after = '' ) {
+               $terms = get_the_terms( get_post()->ID, 'event' );
+               if ( ! $terms || is_wp_error( $terms ) ) {
+                       return;
+               }
+
+               foreach ( $terms as $term ) {
+                       $link = get_term_link( $term, 'event' );
+                       echo $before . '<a href="' . esc_url( $link ) . '">' . esc_html( $term->name ) . '</a>' . $after;
+                       break; // only the first one event is printed
+               }
+       }
+
+       /**
+        * Display the Terms
+        *
+        * Give this a taxonomy
+        *
+        * @param string $taxonomy
+        * @param string $before
+        * @param string $sep
+        * @param string $after
+        * @param bool $display_count
+        */
+       public function the_terms( $taxonomy = 'post_tag', $before = '', $sep = '', $after = '', $display_count = true ) {
+               $terms = get_the_terms( get_post()->ID, $taxonomy );
+               if ( ! $terms || is_wp_error( $terms ) ) {
+                       return false;
+               }
+
+               $links = array();
+               foreach ( $terms as $term ) {
+                       $count   = $display_count ? ' <span class="tag-count">' . absint( $term->count ) . '</span>' : '';
+                       $links[] = '<a href="' . esc_url( get_term_link( $term, $taxonomy ) ) . '">' . esc_html( $term->name ) . $count . '</a>';
+               }
+               echo $before . join( $sep, $links ) . $after;
+       }
+
+       /**
+        * Runs during transition_post_status, bumps some stats.
+        *
+        * @param string $new_status
+        * @param string $old_status
+        */
+       function transition_post_status( $new_status, $old_status ) {
+               if ( 'publish' != $new_status || 'publish' == $old_status ) {
+                       return;
+               }
+
+               // Make it easier to contribute to this theme by not assuming WP.com context.
+               if ( function_exists( 'bump_stats_extras' ) ) {
+                       bump_stats_extras( 'wptv-activity', 'publish-video' );
+               }
+       }
+}
+
+global $wptv;
+$wptv = new WordPressTV_Theme;
+
+/**
+ * WordCampTV wp_nav_menu Walker Class
+ *
+ * Use this class with wp_nav_menu to output an event
+ * together with some videos from the event.
+ */
+class WordCampTV_Walker_Nav_Menu extends Walker {
+
+       /**
+        * @see Walker
+        */
+       var $tree_type = array( 'post_type', 'taxonomy', 'custom' );
+       var $db_fields = array( 'parent' => 'menu_item_parent', 'id' => 'db_id' );
+
+       /**
+        * @see Walker::start_el()
+        *
+        * If an item is an event, print the event heading,
+        * followed by a WP_Query that loops through some of the
+        * videos in the event. start_el does all the work and does not need end_el.
+        *
+        * @param string $output
+        * @param object $item
+        * @param int $depth
+        * @param array $args
+        * @param int $id
+        */
+       function start_el( &$output, $item, $depth = 0, $args = array(), $id = 0 ) {
+
+               // Skip if it's not an event item.
+               if ( $item->object != 'event' || $item->type != 'taxonomy' ) {
+                       return;
+               }
+
+               global $wptv;
+
+               // Use this query to fetch event videos.
+               $query = new WP_Query( array(
+                       'posts_per_page' => 4,
+                       'tax_query'      => array(
+                               array(
+                                       'taxonomy' => 'event',
+                                       'field'    => 'id',
+                                       'terms'    => $item->object_id,
+                               ),
+                       ),
+               ) );
+
+               ob_start();
+               ?>
+               <div>
+                       <h3>
+                               <?php echo apply_filters( 'the_title', $item->title ); ?>
+                               <a href="<?php echo esc_url( $item->url ); ?>" class="view-more"><?php esc_html_e( 'More &rarr;' ); ?></a>
+                       </h3>
+                       <ul class="video-list four-col">
+                               <?php while ( $query->have_posts() ) : $query->the_post(); ?>
+                               <li>
+                                       <a href="<?php the_permalink(); ?>">
+                                               <span class="video-thumbnail"><?php $wptv->the_video_image( 50, null, false ); ?></span>
+                                               <span class="video-title"><?php the_title(); ?></span>
+                                       </a>
+                               </li>
+                               <?php endwhile; ?>
+                       </ul>
+               </div>
+               <?php
+               $output .= ob_get_contents();
+               ob_end_clean();
+       }
+}
+
+
+function wptv_enqueue_scripts() {
+       wp_enqueue_style( 'wptv-style', get_stylesheet_uri() . '?s' );
+
+       // Load the Internet Explorer specific stylesheet.
+       wp_enqueue_style( 'wptv-ie', get_template_directory_uri() . '/ie6.css', array( 'wptv-style' ) );
+       wp_style_add_data( 'wptv-ie', 'conditional', 'IE 6' );
+
+       wp_register_script( 'wptv-dropdowns', get_template_directory_uri() . '/js/dropdowns.js' );
+       wp_enqueue_script( 'wptv-dropdowns', array( 'jquery' ) );
+
+       if ( is_singular() && comments_open() && get_option( 'thread_comments' ) ) {
+               wp_enqueue_script( 'comment-reply' );
+       }
+}
+add_action( 'wp_enqueue_scripts', 'wptv_enqueue_scripts' );
+
+/**
+ * Create a nicely formatted and more specific title element text for output
+ * in head of document, based on current view.
+ *
+ * @param string $title Default title text for current view.
+ * @param string $sep Optional separator.
+ *
+ * @return string The filtered title.
+ */
+function wptv_wp_title( $title, $sep ) {
+       if ( is_feed() ) {
+               return $title;
+       }
+
+       global $paged, $page;
+
+       // Add the site name.
+       $title .= get_bloginfo( 'name', 'display' );
+
+       // Add the site description for the home/front page.
+       $site_description = get_bloginfo( 'description', 'display' );
+       if ( $site_description && ( is_home() || is_front_page() ) ) {
+               $title = "$title $sep $site_description";
+       }
+
+       // Add a page number if necessary.
+       if ( ( $paged >= 2 || $page >= 2 ) && ! is_404() ) {
+               $title = "$title $sep " . sprintf( __( 'Page %s', 'wptv' ), max( $paged, $page ) );
+       }
+
+       return $title;
+}
+add_filter( 'wp_title', 'wptv_wp_title', 10, 2 );
</ins></span></pre></div>
<a id="sitestrunkwordpresstvpublic_htmlwpcontentthemeswptv2headerphp"></a>
<div class="addfile"><h4 style="background-color: #eee; color: inherit; margin: 1em 0; padding: 1.3em; font-size: 115%">Added: sites/trunk/wordpress.tv/public_html/wp-content/themes/wptv2/header.php</h4>
<pre class="diff"><span>
<span class="info" style="display: block; padding: 0 10px; color: #888">--- sites/trunk/wordpress.tv/public_html/wp-content/themes/wptv2/header.php                           (rev 0)
+++ sites/trunk/wordpress.tv/public_html/wp-content/themes/wptv2/header.php     2014-12-03 20:10:33 UTC (rev 1024)
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -0,0 +1,45 @@
</span><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+<?php
+/**
+ * WordPress.tv Header Template
+ *
+ * @global $wptv
+ */
+
+global $wptv;
+?><!DOCTYPE html>
+<!--[if IE 6]>    <html class="ie6" <?php language_attributes(); ?>> <![endif]-->
+<!--[if IE 7]>    <html class="ie7" <?php language_attributes(); ?>> <![endif]-->
+<!--[if IE 8]>    <html class="ie8" <?php language_attributes(); ?>> <![endif]-->
+<!--[if gt IE 8]><!--> <html <?php language_attributes(); ?>> <!--<![endif]-->
+
+<head>
+       <meta charset="<?php bloginfo( 'charset' ); ?>">
+       <title><?php wp_title( '|', true, 'right' ); ?></title>
+
+       <link rel="alternate" type="application/rss+xml" title="<?php esc_attr_e( 'WordPress.tv RSS Feed', 'wptv' ); ?>" href="http://wordpress.tv/feed/" />
+       <link rel="alternate" type="application/rss+xml" title="<?php esc_attr_e( 'WordPress.tv Blog RSS Feed', 'wptv' ); ?>" href="http://blog.wordpress.tv/feed/" />
+       <link rel="profile" href="http://gmpg.org/xfn/11">
+       <link rel="pingback" href="<?php bloginfo( 'pingback_url' ); ?>" />
+
+       <script type="text/javascript" src="http://use.typekit.com/mgi6udv.js"></script>
+       <script type="text/javascript">try{Typekit.load();}catch(e){}</script>
+       <?php wp_head(); ?>
+</head>
+
+<body <?php body_class(); ?>>
+<div id="page">
+       <div id="header">
+               <div class="sleeve">
+
+                       <h1><a rel="home" href="<?php echo $wptv->home_url( '/' ); ?>"><img src="<?php echo get_template_directory_uri(); ?>/i/wptv-2x.png" alt="<?php echo esc_attr( get_bloginfo( 'name' ) ); ?>" height="40" width="210" /></a></h1>
+
+                       <form id="searchform" name="searchform" method="get" action="<?php echo $wptv->home_url( '/' ); ?>">
+                               <input type="search" placeholder="<?php esc_attr_e( 'Search WordPress.tv', 'wptv' ); ?>" id="searchbox" name="s" value="<?php the_search_query(); ?>"  />
+                       </form>
+
+                       <div id="menu">
+                               <?php wp_nav_menu( array( 'theme_location' => 'primary' ) ); ?>
+                       </div>
+
+               </div><!-- .sleeve -->
+       </div><!-- #header -->
</ins></span></pre></div>
<a id="sitestrunkwordpresstvpublic_htmlwpcontentthemeswptv2iarrowpng"></a>
<div class="binary"><h4 style="background-color: #eee; color: inherit; margin: 1em 0; padding: 1.3em; font-size: 115%">Added: sites/trunk/wordpress.tv/public_html/wp-content/themes/wptv2/i/arrow.png</h4>
<pre class="diff"><span>
<span class="cx">(Binary files differ)
</span></span></pre></div>
<span class="cx" style="display: block; padding: 0 10px">Index: sites/trunk/wordpress.tv/public_html/wp-content/themes/wptv2/i/arrow.png
</span><span class="cx" style="display: block; padding: 0 10px">===================================================================
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">--- sites/trunk/wordpress.tv/public_html/wp-content/themes/wptv2/i/arrow.png     2014-12-03 19:29:57 UTC (rev 1023)
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+++ sites/trunk/wordpress.tv/public_html/wp-content/themes/wptv2/i/arrow.png      2014-12-03 20:10:33 UTC (rev 1024)
</ins><span class="cx" style="display: block; padding: 0 10px">Property changes on: sites/trunk/wordpress.tv/public_html/wp-content/themes/wptv2/i/arrow.png
</span><span class="cx" style="display: block; padding: 0 10px">___________________________________________________________________
</span><a id="svnmimetype"></a>
<div class="addfile"><h4 style="background-color: #eee; color: inherit; margin: 1em 0; padding: 1.3em; font-size: 115%">Added: svn:mime-type</h4></div>
<ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+image/png
</ins><span class="cx" style="display: block; padding: 0 10px">\ No newline at end of property
</span><a id="sitestrunkwordpresstvpublic_htmlwpcontentthemeswptv2iautomatticpng"></a>
<div class="binary"><h4 style="background-color: #eee; color: inherit; margin: 1em 0; padding: 1.3em; font-size: 115%">Added: sites/trunk/wordpress.tv/public_html/wp-content/themes/wptv2/i/automattic.png</h4>
<pre class="diff"><span>
<span class="cx">(Binary files differ)
</span></span></pre></div>
<span class="cx" style="display: block; padding: 0 10px">Index: sites/trunk/wordpress.tv/public_html/wp-content/themes/wptv2/i/automattic.png
</span><span class="cx" style="display: block; padding: 0 10px">===================================================================
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">--- sites/trunk/wordpress.tv/public_html/wp-content/themes/wptv2/i/automattic.png        2014-12-03 19:29:57 UTC (rev 1023)
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+++ sites/trunk/wordpress.tv/public_html/wp-content/themes/wptv2/i/automattic.png 2014-12-03 20:10:33 UTC (rev 1024)
</ins><span class="cx" style="display: block; padding: 0 10px">Property changes on: sites/trunk/wordpress.tv/public_html/wp-content/themes/wptv2/i/automattic.png
</span><span class="cx" style="display: block; padding: 0 10px">___________________________________________________________________
</span><a id="svnmimetype"></a>
<div class="addfile"><h4 style="background-color: #eee; color: inherit; margin: 1em 0; padding: 1.3em; font-size: 115%">Added: svn:mime-type</h4></div>
<ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+image/png
</ins><span class="cx" style="display: block; padding: 0 10px">\ No newline at end of property
</span><a id="sitestrunkwordpresstvpublic_htmlwpcontentthemeswptv2ibgpng"></a>
<div class="binary"><h4 style="background-color: #eee; color: inherit; margin: 1em 0; padding: 1.3em; font-size: 115%">Added: sites/trunk/wordpress.tv/public_html/wp-content/themes/wptv2/i/bg.png</h4>
<pre class="diff"><span>
<span class="cx">(Binary files differ)
</span></span></pre></div>
<span class="cx" style="display: block; padding: 0 10px">Index: sites/trunk/wordpress.tv/public_html/wp-content/themes/wptv2/i/bg.png
</span><span class="cx" style="display: block; padding: 0 10px">===================================================================
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">--- sites/trunk/wordpress.tv/public_html/wp-content/themes/wptv2/i/bg.png        2014-12-03 19:29:57 UTC (rev 1023)
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+++ sites/trunk/wordpress.tv/public_html/wp-content/themes/wptv2/i/bg.png 2014-12-03 20:10:33 UTC (rev 1024)
</ins><span class="cx" style="display: block; padding: 0 10px">Property changes on: sites/trunk/wordpress.tv/public_html/wp-content/themes/wptv2/i/bg.png
</span><span class="cx" style="display: block; padding: 0 10px">___________________________________________________________________
</span><a id="svnmimetype"></a>
<div class="addfile"><h4 style="background-color: #eee; color: inherit; margin: 1em 0; padding: 1.3em; font-size: 115%">Added: svn:mime-type</h4></div>
<ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+image/png
</ins><span class="cx" style="display: block; padding: 0 10px">\ No newline at end of property
</span><a id="sitestrunkwordpresstvpublic_htmlwpcontentthemeswptv2iheaderbgpng"></a>
<div class="binary"><h4 style="background-color: #eee; color: inherit; margin: 1em 0; padding: 1.3em; font-size: 115%">Added: sites/trunk/wordpress.tv/public_html/wp-content/themes/wptv2/i/header-bg.png</h4>
<pre class="diff"><span>
<span class="cx">(Binary files differ)
</span></span></pre></div>
<span class="cx" style="display: block; padding: 0 10px">Index: sites/trunk/wordpress.tv/public_html/wp-content/themes/wptv2/i/header-bg.png
</span><span class="cx" style="display: block; padding: 0 10px">===================================================================
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">--- sites/trunk/wordpress.tv/public_html/wp-content/themes/wptv2/i/header-bg.png 2014-12-03 19:29:57 UTC (rev 1023)
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+++ sites/trunk/wordpress.tv/public_html/wp-content/themes/wptv2/i/header-bg.png  2014-12-03 20:10:33 UTC (rev 1024)
</ins><span class="cx" style="display: block; padding: 0 10px">Property changes on: sites/trunk/wordpress.tv/public_html/wp-content/themes/wptv2/i/header-bg.png
</span><span class="cx" style="display: block; padding: 0 10px">___________________________________________________________________
</span><a id="svnmimetype"></a>
<div class="addfile"><h4 style="background-color: #eee; color: inherit; margin: 1em 0; padding: 1.3em; font-size: 115%">Added: svn:mime-type</h4></div>
<ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+image/png
</ins><span class="cx" style="display: block; padding: 0 10px">\ No newline at end of property
</span><a id="sitestrunkwordpresstvpublic_htmlwpcontentthemeswptv2imichaelpickstashesaguinnessgif"></a>
<div class="binary"><h4 style="background-color: #eee; color: inherit; margin: 1em 0; padding: 1.3em; font-size: 115%">Added: sites/trunk/wordpress.tv/public_html/wp-content/themes/wptv2/i/michael-pick-stashes-a-guinness.gif</h4>
<pre class="diff"><span>
<span class="cx">(Binary files differ)
</span></span></pre></div>
<span class="cx" style="display: block; padding: 0 10px">Index: sites/trunk/wordpress.tv/public_html/wp-content/themes/wptv2/i/michael-pick-stashes-a-guinness.gif
</span><span class="cx" style="display: block; padding: 0 10px">===================================================================
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">--- sites/trunk/wordpress.tv/public_html/wp-content/themes/wptv2/i/michael-pick-stashes-a-guinness.gif   2014-12-03 19:29:57 UTC (rev 1023)
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+++ sites/trunk/wordpress.tv/public_html/wp-content/themes/wptv2/i/michael-pick-stashes-a-guinness.gif    2014-12-03 20:10:33 UTC (rev 1024)
</ins><span class="cx" style="display: block; padding: 0 10px">Property changes on: sites/trunk/wordpress.tv/public_html/wp-content/themes/wptv2/i/michael-pick-stashes-a-guinness.gif
</span><span class="cx" style="display: block; padding: 0 10px">___________________________________________________________________
</span><a id="svnmimetype"></a>
<div class="addfile"><h4 style="background-color: #eee; color: inherit; margin: 1em 0; padding: 1.3em; font-size: 115%">Added: svn:mime-type</h4></div>
<ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+image/gif
</ins><span class="cx" style="display: block; padding: 0 10px">\ No newline at end of property
</span><a id="sitestrunkwordpresstvpublic_htmlwpcontentthemeswptv2inoisepng"></a>
<div class="binary"><h4 style="background-color: #eee; color: inherit; margin: 1em 0; padding: 1.3em; font-size: 115%">Added: sites/trunk/wordpress.tv/public_html/wp-content/themes/wptv2/i/noise.png</h4>
<pre class="diff"><span>
<span class="cx">(Binary files differ)
</span></span></pre></div>
<span class="cx" style="display: block; padding: 0 10px">Index: sites/trunk/wordpress.tv/public_html/wp-content/themes/wptv2/i/noise.png
</span><span class="cx" style="display: block; padding: 0 10px">===================================================================
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">--- sites/trunk/wordpress.tv/public_html/wp-content/themes/wptv2/i/noise.png     2014-12-03 19:29:57 UTC (rev 1023)
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+++ sites/trunk/wordpress.tv/public_html/wp-content/themes/wptv2/i/noise.png      2014-12-03 20:10:33 UTC (rev 1024)
</ins><span class="cx" style="display: block; padding: 0 10px">Property changes on: sites/trunk/wordpress.tv/public_html/wp-content/themes/wptv2/i/noise.png
</span><span class="cx" style="display: block; padding: 0 10px">___________________________________________________________________
</span><a id="svnmimetype"></a>
<div class="addfile"><h4 style="background-color: #eee; color: inherit; margin: 1em 0; padding: 1.3em; font-size: 115%">Added: svn:mime-type</h4></div>
<ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+image/png
</ins><span class="cx" style="display: block; padding: 0 10px">\ No newline at end of property
</span><a id="sitestrunkwordpresstvpublic_htmlwpcontentthemeswptv2inotfoundpng"></a>
<div class="binary"><h4 style="background-color: #eee; color: inherit; margin: 1em 0; padding: 1.3em; font-size: 115%">Added: sites/trunk/wordpress.tv/public_html/wp-content/themes/wptv2/i/notfound.png</h4>
<pre class="diff"><span>
<span class="cx">(Binary files differ)
</span></span></pre></div>
<span class="cx" style="display: block; padding: 0 10px">Index: sites/trunk/wordpress.tv/public_html/wp-content/themes/wptv2/i/notfound.png
</span><span class="cx" style="display: block; padding: 0 10px">===================================================================
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">--- sites/trunk/wordpress.tv/public_html/wp-content/themes/wptv2/i/notfound.png  2014-12-03 19:29:57 UTC (rev 1023)
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+++ sites/trunk/wordpress.tv/public_html/wp-content/themes/wptv2/i/notfound.png   2014-12-03 20:10:33 UTC (rev 1024)
</ins><span class="cx" style="display: block; padding: 0 10px">Property changes on: sites/trunk/wordpress.tv/public_html/wp-content/themes/wptv2/i/notfound.png
</span><span class="cx" style="display: block; padding: 0 10px">___________________________________________________________________
</span><a id="svnmimetype"></a>
<div class="addfile"><h4 style="background-color: #eee; color: inherit; margin: 1em 0; padding: 1.3em; font-size: 115%">Added: svn:mime-type</h4></div>
<ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+image/png
</ins><span class="cx" style="display: block; padding: 0 10px">\ No newline at end of property
</span><a id="sitestrunkwordpresstvpublic_htmlwpcontentthemeswptv2ivideopresspoweredpng"></a>
<div class="binary"><h4 style="background-color: #eee; color: inherit; margin: 1em 0; padding: 1.3em; font-size: 115%">Added: sites/trunk/wordpress.tv/public_html/wp-content/themes/wptv2/i/videopresspowered.png</h4>
<pre class="diff"><span>
<span class="cx">(Binary files differ)
</span></span></pre></div>
<span class="cx" style="display: block; padding: 0 10px">Index: sites/trunk/wordpress.tv/public_html/wp-content/themes/wptv2/i/videopresspowered.png
</span><span class="cx" style="display: block; padding: 0 10px">===================================================================
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">--- sites/trunk/wordpress.tv/public_html/wp-content/themes/wptv2/i/videopresspowered.png 2014-12-03 19:29:57 UTC (rev 1023)
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+++ sites/trunk/wordpress.tv/public_html/wp-content/themes/wptv2/i/videopresspowered.png  2014-12-03 20:10:33 UTC (rev 1024)
</ins><span class="cx" style="display: block; padding: 0 10px">Property changes on: sites/trunk/wordpress.tv/public_html/wp-content/themes/wptv2/i/videopresspowered.png
</span><span class="cx" style="display: block; padding: 0 10px">___________________________________________________________________
</span><a id="svnmimetype"></a>
<div class="addfile"><h4 style="background-color: #eee; color: inherit; margin: 1em 0; padding: 1.3em; font-size: 115%">Added: svn:mime-type</h4></div>
<ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+image/png
</ins><span class="cx" style="display: block; padding: 0 10px">\ No newline at end of property
</span><a id="sitestrunkwordpresstvpublic_htmlwpcontentthemeswptv2ivideowrapperbgpng"></a>
<div class="binary"><h4 style="background-color: #eee; color: inherit; margin: 1em 0; padding: 1.3em; font-size: 115%">Added: sites/trunk/wordpress.tv/public_html/wp-content/themes/wptv2/i/videowrapper-bg.png</h4>
<pre class="diff"><span>
<span class="cx">(Binary files differ)
</span></span></pre></div>
<span class="cx" style="display: block; padding: 0 10px">Index: sites/trunk/wordpress.tv/public_html/wp-content/themes/wptv2/i/videowrapper-bg.png
</span><span class="cx" style="display: block; padding: 0 10px">===================================================================
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">--- sites/trunk/wordpress.tv/public_html/wp-content/themes/wptv2/i/videowrapper-bg.png   2014-12-03 19:29:57 UTC (rev 1023)
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+++ sites/trunk/wordpress.tv/public_html/wp-content/themes/wptv2/i/videowrapper-bg.png    2014-12-03 20:10:33 UTC (rev 1024)
</ins><span class="cx" style="display: block; padding: 0 10px">Property changes on: sites/trunk/wordpress.tv/public_html/wp-content/themes/wptv2/i/videowrapper-bg.png
</span><span class="cx" style="display: block; padding: 0 10px">___________________________________________________________________
</span><a id="svnmimetype"></a>
<div class="addfile"><h4 style="background-color: #eee; color: inherit; margin: 1em 0; padding: 1.3em; font-size: 115%">Added: svn:mime-type</h4></div>
<ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+image/png
</ins><span class="cx" style="display: block; padding: 0 10px">\ No newline at end of property
</span><a id="sitestrunkwordpresstvpublic_htmlwpcontentthemeswptv2iwptv2xpng"></a>
<div class="binary"><h4 style="background-color: #eee; color: inherit; margin: 1em 0; padding: 1.3em; font-size: 115%">Added: sites/trunk/wordpress.tv/public_html/wp-content/themes/wptv2/i/wptv-2x.png</h4>
<pre class="diff"><span>
<span class="cx">(Binary files differ)
</span></span></pre></div>
<span class="cx" style="display: block; padding: 0 10px">Index: sites/trunk/wordpress.tv/public_html/wp-content/themes/wptv2/i/wptv-2x.png
</span><span class="cx" style="display: block; padding: 0 10px">===================================================================
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">--- sites/trunk/wordpress.tv/public_html/wp-content/themes/wptv2/i/wptv-2x.png   2014-12-03 19:29:57 UTC (rev 1023)
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+++ sites/trunk/wordpress.tv/public_html/wp-content/themes/wptv2/i/wptv-2x.png    2014-12-03 20:10:33 UTC (rev 1024)
</ins><span class="cx" style="display: block; padding: 0 10px">Property changes on: sites/trunk/wordpress.tv/public_html/wp-content/themes/wptv2/i/wptv-2x.png
</span><span class="cx" style="display: block; padding: 0 10px">___________________________________________________________________
</span><a id="svnmimetype"></a>
<div class="addfile"><h4 style="background-color: #eee; color: inherit; margin: 1em 0; padding: 1.3em; font-size: 115%">Added: svn:mime-type</h4></div>
<ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+image/png
</ins><span class="cx" style="display: block; padding: 0 10px">\ No newline at end of property
</span><a id="sitestrunkwordpresstvpublic_htmlwpcontentthemeswptv2iwptvbluepng"></a>
<div class="binary"><h4 style="background-color: #eee; color: inherit; margin: 1em 0; padding: 1.3em; font-size: 115%">Added: sites/trunk/wordpress.tv/public_html/wp-content/themes/wptv2/i/wptv-blue.png</h4>
<pre class="diff"><span>
<span class="cx">(Binary files differ)
</span></span></pre></div>
<span class="cx" style="display: block; padding: 0 10px">Index: sites/trunk/wordpress.tv/public_html/wp-content/themes/wptv2/i/wptv-blue.png
</span><span class="cx" style="display: block; padding: 0 10px">===================================================================
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">--- sites/trunk/wordpress.tv/public_html/wp-content/themes/wptv2/i/wptv-blue.png 2014-12-03 19:29:57 UTC (rev 1023)
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+++ sites/trunk/wordpress.tv/public_html/wp-content/themes/wptv2/i/wptv-blue.png  2014-12-03 20:10:33 UTC (rev 1024)
</ins><span class="cx" style="display: block; padding: 0 10px">Property changes on: sites/trunk/wordpress.tv/public_html/wp-content/themes/wptv2/i/wptv-blue.png
</span><span class="cx" style="display: block; padding: 0 10px">___________________________________________________________________
</span><a id="svnmimetype"></a>
<div class="addfile"><h4 style="background-color: #eee; color: inherit; margin: 1em 0; padding: 1.3em; font-size: 115%">Added: svn:mime-type</h4></div>
<ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+image/png
</ins><span class="cx" style="display: block; padding: 0 10px">\ No newline at end of property
</span><a id="sitestrunkwordpresstvpublic_htmlwpcontentthemeswptv2iwptvgradpng"></a>
<div class="binary"><h4 style="background-color: #eee; color: inherit; margin: 1em 0; padding: 1.3em; font-size: 115%">Added: sites/trunk/wordpress.tv/public_html/wp-content/themes/wptv2/i/wptv-grad.png</h4>
<pre class="diff"><span>
<span class="cx">(Binary files differ)
</span></span></pre></div>
<span class="cx" style="display: block; padding: 0 10px">Index: sites/trunk/wordpress.tv/public_html/wp-content/themes/wptv2/i/wptv-grad.png
</span><span class="cx" style="display: block; padding: 0 10px">===================================================================
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">--- sites/trunk/wordpress.tv/public_html/wp-content/themes/wptv2/i/wptv-grad.png 2014-12-03 19:29:57 UTC (rev 1023)
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+++ sites/trunk/wordpress.tv/public_html/wp-content/themes/wptv2/i/wptv-grad.png  2014-12-03 20:10:33 UTC (rev 1024)
</ins><span class="cx" style="display: block; padding: 0 10px">Property changes on: sites/trunk/wordpress.tv/public_html/wp-content/themes/wptv2/i/wptv-grad.png
</span><span class="cx" style="display: block; padding: 0 10px">___________________________________________________________________
</span><a id="svnmimetype"></a>
<div class="addfile"><h4 style="background-color: #eee; color: inherit; margin: 1em 0; padding: 1.3em; font-size: 115%">Added: svn:mime-type</h4></div>
<ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+image/png
</ins><span class="cx" style="display: block; padding: 0 10px">\ No newline at end of property
</span><a id="sitestrunkwordpresstvpublic_htmlwpcontentthemeswptv2iwptvlogopng"></a>
<div class="binary"><h4 style="background-color: #eee; color: inherit; margin: 1em 0; padding: 1.3em; font-size: 115%">Added: sites/trunk/wordpress.tv/public_html/wp-content/themes/wptv2/i/wptv-logo.png</h4>
<pre class="diff"><span>
<span class="cx">(Binary files differ)
</span></span></pre></div>
<span class="cx" style="display: block; padding: 0 10px">Index: sites/trunk/wordpress.tv/public_html/wp-content/themes/wptv2/i/wptv-logo.png
</span><span class="cx" style="display: block; padding: 0 10px">===================================================================
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">--- sites/trunk/wordpress.tv/public_html/wp-content/themes/wptv2/i/wptv-logo.png 2014-12-03 19:29:57 UTC (rev 1023)
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+++ sites/trunk/wordpress.tv/public_html/wp-content/themes/wptv2/i/wptv-logo.png  2014-12-03 20:10:33 UTC (rev 1024)
</ins><span class="cx" style="display: block; padding: 0 10px">Property changes on: sites/trunk/wordpress.tv/public_html/wp-content/themes/wptv2/i/wptv-logo.png
</span><span class="cx" style="display: block; padding: 0 10px">___________________________________________________________________
</span><a id="svnmimetype"></a>
<div class="addfile"><h4 style="background-color: #eee; color: inherit; margin: 1em 0; padding: 1.3em; font-size: 115%">Added: svn:mime-type</h4></div>
<ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+image/png
</ins><span class="cx" style="display: block; padding: 0 10px">\ No newline at end of property
</span><a id="sitestrunkwordpresstvpublic_htmlwpcontentthemeswptv2iwptvpng"></a>
<div class="binary"><h4 style="background-color: #eee; color: inherit; margin: 1em 0; padding: 1.3em; font-size: 115%">Added: sites/trunk/wordpress.tv/public_html/wp-content/themes/wptv2/i/wptv.png</h4>
<pre class="diff"><span>
<span class="cx">(Binary files differ)
</span></span></pre></div>
<span class="cx" style="display: block; padding: 0 10px">Index: sites/trunk/wordpress.tv/public_html/wp-content/themes/wptv2/i/wptv.png
</span><span class="cx" style="display: block; padding: 0 10px">===================================================================
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">--- sites/trunk/wordpress.tv/public_html/wp-content/themes/wptv2/i/wptv.png      2014-12-03 19:29:57 UTC (rev 1023)
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+++ sites/trunk/wordpress.tv/public_html/wp-content/themes/wptv2/i/wptv.png       2014-12-03 20:10:33 UTC (rev 1024)
</ins><span class="cx" style="display: block; padding: 0 10px">Property changes on: sites/trunk/wordpress.tv/public_html/wp-content/themes/wptv2/i/wptv.png
</span><span class="cx" style="display: block; padding: 0 10px">___________________________________________________________________
</span><a id="svnmimetype"></a>
<div class="addfile"><h4 style="background-color: #eee; color: inherit; margin: 1em 0; padding: 1.3em; font-size: 115%">Added: svn:mime-type</h4></div>
<ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+image/png
</ins><span class="cx" style="display: block; padding: 0 10px">\ No newline at end of property
</span><a id="sitestrunkwordpresstvpublic_htmlwpcontentthemeswptv2ie6css"></a>
<div class="addfile"><h4 style="background-color: #eee; color: inherit; margin: 1em 0; padding: 1.3em; font-size: 115%">Added: sites/trunk/wordpress.tv/public_html/wp-content/themes/wptv2/ie6.css</h4>
<pre class="diff"><span>
<span class="info" style="display: block; padding: 0 10px; color: #888">--- sites/trunk/wordpress.tv/public_html/wp-content/themes/wptv2/ie6.css                              (rev 0)
+++ sites/trunk/wordpress.tv/public_html/wp-content/themes/wptv2/ie6.css        2014-12-03 20:10:33 UTC (rev 1024)
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -0,0 +1,35 @@
</span><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+.videofeatured h3 {
+       position: absolute;
+       top: 0;
+       left: 0;
+}
+
+.videofeatured {
+       height: 175px;
+}
+
+.arrow {
+       background-position: -100px -100px;
+       top: 0;
+       left: 0;
+}
+
+.pagetitle {
+       height: 50px;
+}
+
+.videowrapper .sleeve {
+       padding-bottom: 14px;
+}
+
+.thirds {
+       width: 970px !important;
+}
+
+.blog .videowrapper {
+       display: none;
+}
+
+.blog .title {
+       border-bottom: 1px solid #333;
+}
</ins><span class="cx" style="display: block; padding: 0 10px">\ No newline at end of file
</span></span></pre></div>
<a id="sitestrunkwordpresstvpublic_htmlwpcontentthemeswptv2incwpcomphp"></a>
<div class="addfile"><h4 style="background-color: #eee; color: inherit; margin: 1em 0; padding: 1.3em; font-size: 115%">Added: sites/trunk/wordpress.tv/public_html/wp-content/themes/wptv2/inc/wpcom.php</h4>
<pre class="diff"><span>
<span class="info" style="display: block; padding: 0 10px; color: #888">--- sites/trunk/wordpress.tv/public_html/wp-content/themes/wptv2/inc/wpcom.php                                (rev 0)
+++ sites/trunk/wordpress.tv/public_html/wp-content/themes/wptv2/inc/wpcom.php  2014-12-03 20:10:33 UTC (rev 1024)
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -0,0 +1,11 @@
</span><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+<?php
+
+require_once WP_CONTENT_DIR . '/themes/vip/plugins/vip-init.php';
+wpcom_vip_load_plugin( 'taxonomy-list-widget' );
+
+if ( apply_filters( 'wptv_setup_theme', true ) ) {
+       // Load plugins and setup theme
+       require_once get_template_directory() . '/plugins/rewrite.php';
+       require_once get_template_directory() . '/plugins/wordpresstv-rest/wordpresstv-rest.php';
+       require_once get_template_directory() . '/plugins/wordpresstv-anon-upload/anon-upload.php';
+}
</ins><span class="cx" style="display: block; padding: 0 10px">\ No newline at end of file
</span></span></pre></div>
<a id="sitestrunkwordpresstvpublic_htmlwpcontentthemeswptv2indexphp"></a>
<div class="addfile"><h4 style="background-color: #eee; color: inherit; margin: 1em 0; padding: 1.3em; font-size: 115%">Added: sites/trunk/wordpress.tv/public_html/wp-content/themes/wptv2/index.php</h4>
<pre class="diff"><span>
<span class="info" style="display: block; padding: 0 10px; color: #888">--- sites/trunk/wordpress.tv/public_html/wp-content/themes/wptv2/index.php                            (rev 0)
+++ sites/trunk/wordpress.tv/public_html/wp-content/themes/wptv2/index.php      2014-12-03 20:10:33 UTC (rev 1024)
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -0,0 +1,85 @@
</span><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+<?php
+/*
+ * WordCamp.tv Index Fallback
+ *
+ * It will be weird if somebody sees this (but okay if 404)
+ */
+
+get_header();
+global $wp_query, $post, $wptv;
+
+if ( have_posts() ) :
+?>
+
+       <div class="wptv-hero">
+               <h2 class="page-title"><?php esc_html_e( 'Archives', 'wptv' ); ?></h2>
+       </div>
+       <div class="container">
+               <div class="primary-content">
+
+                       <ul class="archive video-list">
+
+                               <?php while ( have_posts() ) : the_post(); ?>
+                               <li>
+                                       <a href="<?php the_permalink(); ?>" class="video-thumbnail">
+                                               <?php $wptv->the_video_image( 50, null, false ); ?>
+                                       </a>
+
+                                       <div class="video-description">
+                                               <div class="video-info">
+
+                                                       <h5><?php esc_html_e( 'Published', 'wptv' ); ?></h5>
+                                                       <p class="video-date"><?php the_date(); ?></p>
+
+                                                       <?php if ( $post->post_excerpt ) : ?>
+                                                               <div class="video-description"><?php the_excerpt(); ?></div>
+                                                       <?php
+                                                               endif;
+
+                                                               $wptv->the_terms( 'event',    '<h5>Event</h5><p class="video-event">',       '<br /> ', '</p>' );
+                                                               $wptv->the_terms( 'speakers', '<h5>Speakers</h5><p class="video-speakers">', '<br /> ', '</p>' );
+                                                               $wptv->the_terms( 'post_tag', '<h5>Tags</h5><p class="video-tags">',         '<br /> ', '</p>' );
+                                                               $wptv->the_terms( 'language', '<h5>Language</h5><p class="video-lang">',     '<br /> ', '</p>' );
+                                                       ?>
+                                               </div><!-- .video-info -->
+                                       </div>
+                               </li>
+                               <?php endwhile; // have_posts ?>
+
+                       </ul><!-- .archive.video-list -->
+
+                       <?php get_template_part( 'pagination' ); ?>
+
+               </div>
+
+               <div class="secondary-content">
+                       <?php get_sidebar(); ?>
+               </div><!-- .secondary-content -->
+       </div><!-- .container -->
+
+<?php else : // have_posts ?>
+
+       <div class="wptv-hero">
+               <h2 class="page-title"><?php esc_html_e( 'Whoops!', 'wptv' ); ?></h2>
+       </div>
+       <div class="container">
+               <div class="primary-content">
+
+                       <div class="fourOHfour">
+                               <h2 class="center"><?php esc_html_e( 'Uh oh, someone made a mistake!' ); ?></h2>
+                               <p><?php esc_html_e( 'These sorts of things happen&hellip;' ); ?></p>
+                               <p class="center"><?php esc_html_e( 'Try searching for what you were looking for.' ); ?></p>
+                               <p><?php echo get_search_form(); ?></p>
+                               <p><?php printf ( __( 'Or, <a href="%s">visit the homepage</a> to start a fresh journey.', 'wptv' ), '/' ); ?></p>
+                               <p>
+                                       <img src="<?php echo get_stylesheet_directory_uri(); ?>/i/michael-pick-stashes-a-guinness.gif" alt="" /><br />
+                                       Photo animation credit: <a href="http://markjaquith.com/">Mark Jaquith</a>.
+                               </p>
+                       </div>
+               </div>
+       </div><!-- container -->
+
+<?php
+endif;
+
+get_footer();
</ins></span></pre></div>
<a id="sitestrunkwordpresstvpublic_htmlwpcontentthemeswptv2jsdropdownsjs"></a>
<div class="addfile"><h4 style="background-color: #eee; color: inherit; margin: 1em 0; padding: 1.3em; font-size: 115%">Added: sites/trunk/wordpress.tv/public_html/wp-content/themes/wptv2/js/dropdowns.js</h4>
<pre class="diff"><span>
<span class="info" style="display: block; padding: 0 10px; color: #888">--- sites/trunk/wordpress.tv/public_html/wp-content/themes/wptv2/js/dropdowns.js                              (rev 0)
+++ sites/trunk/wordpress.tv/public_html/wp-content/themes/wptv2/js/dropdowns.js        2014-12-03 20:10:33 UTC (rev 1024)
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -0,0 +1,9 @@
</span><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+jQuery(document).ready( function( $ ) {
+       $('#menu li').hover(
+               function() {
+                       $(this).children('.sub-menu').slideDown('fast');
+               }, function () {
+                       $(this).children('.sub-menu').fadeOut('fast');
+               }
+       );
+});
</ins></span></pre></div>
<a id="sitestrunkwordpresstvpublic_htmlwpcontentthemeswptv2pagephp"></a>
<div class="addfile"><h4 style="background-color: #eee; color: inherit; margin: 1em 0; padding: 1.3em; font-size: 115%">Added: sites/trunk/wordpress.tv/public_html/wp-content/themes/wptv2/page.php</h4>
<pre class="diff"><span>
<span class="info" style="display: block; padding: 0 10px; color: #888">--- sites/trunk/wordpress.tv/public_html/wp-content/themes/wptv2/page.php                             (rev 0)
+++ sites/trunk/wordpress.tv/public_html/wp-content/themes/wptv2/page.php       2014-12-03 20:10:33 UTC (rev 1024)
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -0,0 +1,35 @@
</span><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+<?php
+/**
+ * Page Template
+ */
+get_header();
+the_post();
+?>
+<div class="wptv-hero">
+       <h2 class="page-title">
+               <?php the_title(); ?>
+       </h2>
+</div>
+
+<div class="container">
+       <div class="primary-content">
+
+               <div <?php post_class(); ?>>
+
+                       <div class="entry">
+                               <div class="sleeve">
+                                       <?php the_content(); ?><br />
+                                       <div id="comments">
+                                               <?php wp_link_pages(); ?>
+                                               <?php comments_template(); ?>
+                                       </div>
+                               </div>
+                       </div><!-- .entry -->
+
+               </div><!-- post_class() -->
+
+       </div><!-- .primary-content -->
+       <?php /*get_sidebar('page');*/ ?>
+</div><!-- .container -->
+
+<?php get_footer(); ?>
</ins><span class="cx" style="display: block; padding: 0 10px">\ No newline at end of file
</span></span></pre></div>
<a id="sitestrunkwordpresstvpublic_htmlwpcontentthemeswptv2paginationphp"></a>
<div class="addfile"><h4 style="background-color: #eee; color: inherit; margin: 1em 0; padding: 1.3em; font-size: 115%">Added: sites/trunk/wordpress.tv/public_html/wp-content/themes/wptv2/pagination.php</h4>
<pre class="diff"><span>
<span class="info" style="display: block; padding: 0 10px; color: #888">--- sites/trunk/wordpress.tv/public_html/wp-content/themes/wptv2/pagination.php                               (rev 0)
+++ sites/trunk/wordpress.tv/public_html/wp-content/themes/wptv2/pagination.php 2014-12-03 20:10:33 UTC (rev 1024)
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -0,0 +1,13 @@
</span><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+<?php
+/**
+ * Pagination template part, use with get_template_part()
+ */
+
+if ( $wp_query->max_num_pages > 1 ) :
+?>
+<div class="pagination">
+       <div class="nav-previous"><?php next_posts_link( __( '<span class="meta-nav">&larr;</span> Older videos', 'wptv' ) ); ?></div>
+       <div class="nav-next"><?php previous_posts_link( __( 'Newer videos <span class="meta-nav">&rarr;</span>', 'wptv' ) ); ?></div>
+</div>
+<?php
+endif;
</ins></span></pre></div>
<a id="sitestrunkwordpresstvpublic_htmlwpcontentthemeswptv2pluginsrewritephp"></a>
<div class="addfile"><h4 style="background-color: #eee; color: inherit; margin: 1em 0; padding: 1.3em; font-size: 115%">Added: sites/trunk/wordpress.tv/public_html/wp-content/themes/wptv2/plugins/rewrite.php</h4>
<pre class="diff"><span>
<span class="info" style="display: block; padding: 0 10px; color: #888">--- sites/trunk/wordpress.tv/public_html/wp-content/themes/wptv2/plugins/rewrite.php                          (rev 0)
+++ sites/trunk/wordpress.tv/public_html/wp-content/themes/wptv2/plugins/rewrite.php    2014-12-03 20:10:33 UTC (rev 1024)
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -0,0 +1,18 @@
</span><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+<?php
+/**
+ * WordPress.tv Rewrites
+ *
+ * Some WordPress.tv plugins will add new rewrite rules during init, this plugin
+ * will allow a $_GET request to flush rules.
+ */
+function wptv_maybe_flush_rewrite_rules() {
+       global $wp_rewrite;
+
+       // Visit http://wordpress.tv/?flush_rules=1 as a super admin or kovshenin (4637740)
+       // to flush the rules for /unisubs/ endpoint to work.
+       if ( ( is_super_admin() || get_current_user_id() == 4637740 ) && !empty( $_GET['flush_rules'] ) ) {
+               $wp_rewrite->flush_rules();
+               exit( 'Rewrite rules flushed.' );
+       }
+}
+add_action( 'init', 'wptv_maybe_flush_rewrite_rules', 99 );
</ins></span></pre></div>
<a id="sitestrunkwordpresstvpublic_htmlwpcontentthemeswptv2pluginswordpresstvanonuploadanonuploadphp"></a>
<div class="addfile"><h4 style="background-color: #eee; color: inherit; margin: 1em 0; padding: 1.3em; font-size: 115%">Added: sites/trunk/wordpress.tv/public_html/wp-content/themes/wptv2/plugins/wordpresstv-anon-upload/anon-upload.php</h4>
<pre class="diff"><span>
<span class="info" style="display: block; padding: 0 10px; color: #888">--- sites/trunk/wordpress.tv/public_html/wp-content/themes/wptv2/plugins/wordpresstv-anon-upload/anon-upload.php                              (rev 0)
+++ sites/trunk/wordpress.tv/public_html/wp-content/themes/wptv2/plugins/wordpresstv-anon-upload/anon-upload.php        2014-12-03 20:10:33 UTC (rev 1024)
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -0,0 +1,547 @@
</span><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+<?php
+
+// Anonnymous uploads of videos for WPTV
+class WPTV_Anon_Upload {
+       // hardcoded user_id for the fake contributor that owns the drafts (username: anonvideoupload, currently uses andrew.ozz@automattic email)
+       private $drafts_author = 34340661;
+       var $errors = false;
+       var $success = false;
+
+       function __construct() {
+               add_action( 'admin_post_wptv_video_upload', array( &$this, 'init' ) );
+               add_action( 'admin_post_nopriv_wptv_video_upload', array( &$this, 'init' ) );
+               add_action( 'dbx_post_sidebar', array( &$this, 'display' ) );
+       }
+
+       function init() {
+               if ( ! empty( $_POST['wptvvideon'] ) && wp_verify_nonce( $_POST['wptvvideon'], 'wptv-upload-video' ) ) {
+                       $this->validate();
+
+                       if ( ! $this->errors ) {
+                               $this->success = $this->save();
+                       }
+
+                       $redir = home_url( 'submit-video' );
+
+                       if ( $this->success ) {
+                               $redir = add_query_arg( array( 'success' => 1 ), $redir );
+                       } elseif ( $this->errors ) {
+                               $redir = add_query_arg( array( 'error' => $this->errors ), $redir );
+                       } else {
+                               $redir = add_query_arg( array( 'error' => 5 ), $redir );
+                       }
+
+                       wp_redirect( $redir );
+               } else {
+                       // no nonce, send them "home"?
+                       wp_redirect( home_url() );
+               }
+
+               exit;
+       }
+
+       // This should never trigger in "proper" use as there's JS validation on the form and JS is required.
+       // If it triggers, consider it as a bot/improper use and exit?
+       function validate() {
+               $text_fields = array(
+                       'wptv_video_title',
+                       'wptv_video_producer',
+                       'wptv_speakers',
+                       'wptv_event',
+               );
+
+               // Normal users won't see the honeypot field, so if there's a value in it, then we can assume the submission is spam from a bot
+               if ( ! isset( $_POST['wptv_honey'] ) || ! empty( $_POST['wptv_honey'] ) ) {
+                       if ( function_exists( 'bump_stats_extras' ) ) {
+                               bump_stats_extras( 'wptv-spam', 'honeypot_trapped_anon_upload' );
+                       }
+
+                       return $this->error( 13 );
+               }
+
+               if ( ! is_user_logged_in() ) {
+                       if ( empty( $_POST['wptv_uploaded_by'] ) ) {
+                               return $this->error( 10 );
+                       }
+
+                       if ( empty( $_POST['wptv_email'] ) ) {
+                               return $this->error( 11 );
+                       } elseif ( ! is_email( $_POST['wptv_email'] ) ) {
+                               return $this->error( 12 );
+                       }
+
+                       $text_fields[] = 'wptv_uploaded_by';
+                       $text_fields[] = 'wptv_email';
+               }
+
+               foreach ( $text_fields as $field ) {
+                       if ( strlen( (string) $field ) > 150 ) {
+                               return $this->error( 6 );
+                       }
+               }
+       }
+
+       function handle_upload( $parent_id ) {
+               // allow only video mimes
+               $overrides = array(
+                       'test_form' => false,
+                       'mimes'     => array(
+                               'avi'                 => 'video/avi',
+                               'mov|qt'              => 'video/quicktime',
+                               'mpeg|mpg|mpe'        => 'video/mpeg',
+                               'mp4|m4v'             => 'video/mp4',
+                               'asf|asx|wax|wmv|wmx' => 'video/asf',
+                               'ogv'                 => 'video/ogg',
+                               '3gp'                 => 'video/3gpp',
+                               '3g2'                 => 'video/3gpp2',
+                       ),
+               );
+
+               unset( $_FILES['async-upload'] );
+
+               if ( empty( $_FILES['wptv_file']['name'] ) ) {
+                       return new WP_Error( 'upload_error', 'Invalid file name.' );
+               }
+
+               $name = $_FILES['wptv_file']['name'];
+               add_filter( 'wp_handle_upload_prefilter', array( &$this, 'video_filename' ), 5 );
+
+               $file = wp_handle_upload( $_FILES['wptv_file'], $overrides );
+
+               if ( isset( $file['error'] ) ) {
+                       return new WP_Error( 'upload_error', $file['error'] );
+               }
+
+               $filepath = $file['file'];
+
+               $attachment = array(
+                       'post_title'     => $this->sanitize_text( $name ),
+                       'guid'           => $file['url'],
+                       'post_mime_type' => $file['type'],
+                       'post_content'   => '',
+                       'post_author'    => $this->drafts_author,
+               );
+
+               // expects slashed
+               $attachment_id = wp_insert_attachment( add_magic_quotes( $attachment ), $filepath, $parent_id );
+
+               if ( ! is_wp_error( $attachment_id ) ) {
+                       wp_update_attachment_metadata( $attachment_id, wp_generate_attachment_metadata( $attachment_id, $filepath ) );
+               }
+
+               return $attachment_id;
+       }
+
+       // expects slashed, returns unslashed
+       function sanitize_text( $str, $remove_line_breaks = true ) {
+               $str = str_replace( '\\', '', $str );
+
+               if ( $remove_line_breaks ) {
+                       $str = sanitize_text_field( $str );
+               } else {
+                       $str = wp_check_invalid_utf8( $str );
+                       $str = wp_strip_all_tags( $str );
+
+                       $match = array();
+                       while ( preg_match( '/%[a-f0-9]{2}/i', $str, $match ) ) {
+                               $str = str_replace( $match[0], '', $str );
+                       }
+               }
+
+               return htmlspecialchars( $str, ENT_QUOTES, 'UTF-8' );
+       }
+
+       function error( $msg ) {
+               $this->errors = $msg;
+
+               return false;
+       }
+
+       function video_filename( $file ) {
+               $name_parts = pathinfo( $file['name'] );
+
+               // this should never happen
+               if ( empty( $name_parts['extension'] ) ) {
+                       die;
+               }
+
+               // random file name
+               $str          = md5( time() . rand( 1, 1000000 ) );
+               $file['name'] = 'video-' . substr( $str, rand( 5, 20 ), 10 ) . '.' . $name_parts['extension'];
+
+               return $file;
+       }
+
+       function save() {
+               // check
+               if ( empty( $_FILES['wptv_file']['name'] ) ) {
+                       return $this->error( 1 );
+               }
+
+               // quick file extension check
+               $name_parts = pathinfo( $_FILES['wptv_file']['name'] );
+
+               if ( ! empty( $name_parts['extension'] ) ) {
+                       if ( ! in_array( strtolower( $name_parts['extension'] ), array(
+                                       'avi',
+                                       'mov',
+                                       'qt',
+                                       'mpeg',
+                                       'mpg',
+                                       'mpe',
+                                       'mp4',
+                                       'm4v',
+                                       'asf',
+                                       'asx',
+                                       'wax',
+                                       'wmv',
+                                       'wmx',
+                                       'ogv',
+                                       '3gp',
+                                       '3g2',
+                               ), true )
+                       ) {
+                               return $this->error( 2 );
+                       }
+               } else {
+                       return $this->error( 3 );
+               }
+
+               // empty the globals just in case
+               $_posted    = $_POST;
+               $_requested = $_REQUEST;
+               $_got       = $_GET;
+               $_POST      = $_REQUEST = $_GET = array();
+
+               $blog_id = get_current_blog_id();
+
+               $anon_post = get_default_post_to_edit( 'post' ); // without saving auto-draft
+               $anon_post = get_object_vars( $anon_post );
+
+               $anon_post['post_title']   = 'Uploaded video';
+               $anon_post['post_excerpt'] = '';
+               $anon_post['post_author']  = $this->drafts_author;
+               $anon_post['post_status']  = 'pending';
+
+               // Add default cat according to the "This is a WC video" checkbox
+               if ( ! empty( $_posted['wptv_video_wordcamp'] ) ) {
+                       $anon_post['post_category'] = array( '12784353' ); // add the "WordCampTV" category
+               }
+               else {
+                       $anon_post['post_category'] = array( '1' ); // Uncategorized
+               }
+
+               // Insert the post and attachment
+               $post_id = wp_insert_post( add_magic_quotes( $anon_post ) );
+
+               if ( is_wp_error( $post_id ) ) {
+                       return $this->error( 5 );
+               }
+
+               $attachment_id = $this->handle_upload( $post_id );
+
+               if ( is_wp_error( $attachment_id ) ) {
+                       return $this->error( 5 );
+               }
+
+               // Put the video shortcode in post_content (makes a standard post for wptv).
+               $video_data = function_exists( 'video_get_info_by_blogpostid' ) ? video_get_info_by_blogpostid( $blog_id, $attachment_id ) : false;
+
+               if ( ! $video_data || empty( $video_data->guid ) ) {
+                       return $this->error( 4 );
+               }
+
+               wp_update_post( array( 'ID' => $post_id, 'post_content' => '[wpvideo ' . $video_data->guid . ']' ) );
+
+               // we have post_id, add post meta
+               $current_user = wp_get_current_user();
+
+               if ( ! empty( $current_user->ID ) ) {
+                       // use the logged in user name and email
+                       $anon_author       = $current_user->display_name;
+                       $anon_author_email = $current_user->user_email;
+               } else {
+                       // validate these in the back-end?
+                       $anon_author       = $this->sanitize_text( $_posted['wptv_uploaded_by'] );
+                       $anon_author_email = $this->sanitize_text( $_posted['wptv_email'] );
+               }
+
+               $video_title    = $this->sanitize_text( $_posted['wptv_video_title'] );
+               $video_producer = $this->sanitize_text( $_posted['wptv_video_producer'] );
+               $speakers       = $this->sanitize_text( $_posted['wptv_speakers'] );
+               $event          = $this->sanitize_text( $_posted['wptv_event'] );
+               $description    = $this->sanitize_text( $_posted['wptv_video_description'], false );
+               $language       = $this->sanitize_text( $_posted['wptv_language'] );
+               $ip             = $_SERVER['REMOTE_ADDR'];
+
+               $categories = '';
+               if ( ! empty( $_posted['post_category'] ) && is_array( $_posted['post_category'] ) ) {
+                       foreach ( $_posted['post_category'] as $cat ) {
+                               $cat = (int) $cat;
+                               if ( $cat ) {
+                                       $categories .= "$cat,";
+                               }
+                       }
+               }
+
+               $post_meta = array(
+                       'attachment_id'   => $attachment_id,
+                       'submitted_by'    => $anon_author,
+                       'submitted_email' => $anon_author_email,
+                       'title'           => $video_title,
+                       'producer'        => $video_producer,
+                       'speakers'        => $speakers,
+                       'event'           => $event,
+                       'language'        => $language,
+                       'categories'      => $categories,
+                       'description'     => $description,
+                       'ip'              => $ip,
+               );
+
+               $post_meta['video_guid'] = $video_data->guid;
+               update_post_meta( $post_id, '_wptv_submitted_video', $post_meta );
+
+               // put back the globals
+               $_POST    = $_posted;
+               $_REQUEST = $_requested;
+               $_GET     = $_got;
+
+               return true;
+       }
+
+       function display() {
+               $post = get_post();
+
+               if ( $post->post_author == $this->drafts_author ) {
+                       $meta = get_post_meta( $post->ID, '_wptv_submitted_video', true );
+               }
+
+               if ( empty( $meta ) ) {
+                       return;
+               }
+
+               $attachment_post = get_post( $meta['attachment_id'] );
+
+               $embed_args = array(
+                       'format'  => 'fmt_std',
+                       'width'   => 600,
+                       'context' => 'admin',
+               );
+               $embed_args['blog_id'] = get_current_blog_id();
+               $embed_args['post_id'] = $meta['attachment_id'];
+
+               ?>
+               <div class="stuffbox" id="review-video">
+                       <style type="text/css" scoped="scoped">
+                               #poststuff #anon-data-wrap {
+                                       padding: 5px 15px;
+                               }
+
+                               #review-video h3.hndle {
+                                       cursor: pointer;
+                               }
+
+                               .anon-data {
+                                       padding: 15px 0 0;
+                               }
+
+                               .anon-data p {
+                                       margin: 8px 0;
+                               }
+
+                               .anon-data .label {
+                                       display: inline-block;
+                                       width: 23%;
+                               }
+
+                               .anon-data .data {
+                                       display: inline-block;
+                                       width: 75%;
+                               }
+
+                               .anon-data input[type="text"], .anon-data textarea {
+                                       width: 80%;
+                               }
+
+                               .anon-data a.anon-approve {
+                                       max-width: 19%;
+                                       margin-left: 1%;
+                               }
+
+                               .anon-data .txtarea .data a.anon-approve {
+                                       bottom: 6px;
+                                       position: relative;
+                               }
+
+                               .anon-data .txtarea .label {
+                                       padding: 10px 0;
+                                       vertical-align: top;
+                               }
+
+                               .anon-data a.disabled {
+                                       color: #888;
+                               }
+                       </style>
+                       <h3 class="hndle"><span>Submitted video</span></h3>
+
+                       <div id="anon-data-wrap" class="inside">
+
+                               <p>To change the default thumbnail image, play the video and click "Capture Thumbnail" button.</p>
+                               <table>
+                                       <tr>
+                                               <td>
+                                                       <?php
+                                                               if ( function_exists( 'video_embed' ) ) {
+                                                                       echo video_embed( $embed_args );
+                                                               }
+                                                       ?>
+                                               </td>
+                                       </tr>
+                               </table>
+
+                               <div class="anon-data">
+                                       <div class="row">
+                                               <p class="label">Submitted by:<br></p>
+                                               <p class="data">
+                                                       <input type="text" readonly="readonly" value="<?php echo esc_attr( $meta['submitted_by'] ); ?>"/>
+                                               </p>
+                                       </div>
+
+                                       <div class="row">
+                                               <p class="label">Email:</p>
+                                               <p class="data">
+                                                       <a href="mailto:<?php echo esc_attr( $meta['submitted_email'] ); ?>?Subject=Your%20WordPress.tv%20submission"><?php echo esc_html( $meta['submitted_email'] ); ?></a>
+                                               </p>
+                                       </div>
+
+                                       <div class="row">
+                                               <p class="label">IP Address:</p>
+                                               <p class="data">
+                                                       <a href="<?php echo esc_url( add_query_arg( array( 'query' => $meta['ip'] ), 'http://en.utrace.de' ) ); ?>" target="_blank"><?php echo esc_html( $meta['ip'] ); ?></a> (opens in new tab, shows location of the IP)
+                                               </p>
+                                       </div>
+
+                                       <div class="row">
+                                               <p class="label">Title:</p>
+                                               <p class="data">
+                                                       <input type="text" value="<?php echo esc_attr( $meta['title'] ); ?>"/>
+                                                       <a class="button-secondary anon-approve" href="#title">Approve</a>
+                                               </p>
+                                       </div>
+
+                                       <div class="row">
+                                               <p class="label">Language:</p>
+                                               <p class="data">
+                                                       <input type="text" value="<?php echo esc_attr( $meta['language'] ); ?>"/>
+                                                       <a class="button-secondary anon-approve" href="#new-tag-language">Approve</a>
+                                               </p>
+                                       </div>
+
+                                       <div class="row">
+                                               <p class="label">Categories:</p>
+                                               <p class="data" id="anon-approve-cats">
+                                                       <?php
+                                                               $cats = preg_replace( '/[^0-9,]+/', '', trim( $meta['categories'], ' ,' ) );
+                                                               $cats = explode( ',', $cats );
+                                                               foreach ( $cats as $cat ) {
+                                                                       if ( intval( $cat ) ) {
+                                                                               echo '<a href="#in-category-' . $cat . '" class="anon-cat-link" title="Click to approve">Unknown?</a>, ';
+                                                                       }
+                                                               }
+                                                       ?>
+                                               </p>
+                                       </div>
+
+                                       <div class="row">
+                                               <p class="label">Event:</p>
+                                               <p class="data">
+                                                       <input type="text" value="<?php echo esc_attr( $meta['event'] ); ?>"/>
+                                                       <a class="button-secondary anon-approve" href="#new-tag-event">Approve</a>
+                                               </p>
+                                       </div>
+
+                                       <div class="row">
+                                               <p class="label">Producer:</p>
+                                               <p class="data">
+                                                       <input type="text" value="<?php echo esc_attr( $meta['producer'] ); ?>"/>
+                                                       <a class="button-secondary anon-approve" href="#new-tag-producer">Approve</a>
+                                               </p>
+                                       </div>
+
+                                       <div class="row">
+                                               <p class="label">Speakers:</p>
+                                               <p class="data">
+                                                       <input type="text" value="<?php echo esc_attr( $meta['speakers'] ); ?>"/>
+                                                       <a class="button-secondary anon-approve" href="#new-tag-speakers">Approve</a>
+                                               </p>
+                                       </div>
+
+                                       <div class="row txtarea">
+                                               <p class="label">Description:</p>
+                                               <p class="data">
+                                                       <textarea rows="10"><?php echo esc_html( $meta['description'] ); ?></textarea>
+                                                       <a class="button-secondary anon-approve" href="#excerpt">Approve</a>
+                                               </p>
+                                       </div>
+
+                                       <div class="row">
+                                               <p class="label">Edit attachment:</p>
+                                               <p class="data">
+                                                       <a href="<?php echo esc_url( get_edit_post_link( $meta['attachment_id'] ) ); ?>" target="_blank"><?php echo esc_html( $attachment_post->post_title ); ?></a>
+                                               </p>
+                                       </div>
+                               </div>
+                       </div>
+               </div>
+               <script type="text/javascript">
+                       (function ($) {
+                               $('#post-body-content').prepend($('#review-video'));
+
+                               $(document).ready(function ($) {
+                                       var default_cat = true;
+
+                                       $('#review-video h3.hndle').bind('click.fold-anon-video', function (e) {
+                                               $('#anon-data-wrap').slideToggle();
+                                       });
+
+                                       $('#anon-approve-cats a.anon-cat-link').each(function (i, el) {
+                                               var id = el.href.replace(/.*?#/, '#');
+                                               if (id)
+                                                       $(el).html($(id).parent().text());
+                                       });
+
+                                       $('div.anon-data a.anon-approve, #anon-approve-cats a.anon-cat-link').bind('click.anon-approve', function (e) {
+                                               var target = $(e.target), id = target.attr('href'), el = $(id);
+
+                                               if (target.hasClass('disabled'))
+                                                       return;
+
+                                               target.addClass('disabled');
+
+                                               if (id.indexOf('#new-tag-') != -1) {
+                                                       el.val(target.siblings('input[type="text"]').val());
+                                                       el.siblings('.tagadd').click();
+                                               } else if (id == '#title') {
+                                                       el.val(target.siblings('input[type="text"]').val());
+                                               } else if (id == '#excerpt') {
+                                                       el.val(target.siblings('textarea').val());
+                                               } else if (target.is('a.anon-cat-link')) {
+                                                       if (default_cat) {
+                                                               // remove the default category only once
+                                                               $('#in-category-12784353').prop('checked', false);
+                                                               default_cat = false;
+                                                       }
+
+                                                       el.prop('checked', true);
+                                               }
+
+                                               e.preventDefault();
+                                       });
+                               });
+                       })(jQuery);
+               </script>
+       <?php
+       }
+}
+
+$_wptv_anon = new WPTV_Anon_Upload;
</ins></span></pre></div>
<a id="sitestrunkwordpresstvpublic_htmlwpcontentthemeswptv2pluginswordpresstvoembedwordpresstvoembedphp"></a>
<div class="addfile"><h4 style="background-color: #eee; color: inherit; margin: 1em 0; padding: 1.3em; font-size: 115%">Added: sites/trunk/wordpress.tv/public_html/wp-content/themes/wptv2/plugins/wordpresstv-oembed/wordpresstv-oembed.php</h4>
<pre class="diff"><span>
<span class="info" style="display: block; padding: 0 10px; color: #888">--- sites/trunk/wordpress.tv/public_html/wp-content/themes/wptv2/plugins/wordpresstv-oembed/wordpresstv-oembed.php                            (rev 0)
+++ sites/trunk/wordpress.tv/public_html/wp-content/themes/wptv2/plugins/wordpresstv-oembed/wordpresstv-oembed.php      2014-12-03 20:10:33 UTC (rev 1024)
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -0,0 +1,163 @@
</span><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+<?php /*
+
+**************************************************************************
+
+Plugin Name:  WordPress.tv oEmbed Provider
+Plugin URI:   http://wordpress.tv/oembed/
+Description:  Creates an oEmbed provider for WordPress.tv.
+Author:       Viper007Bond
+
+**************************************************************************/
+
+class WordCampTV_oEmbed {
+
+       /**
+        * Class construct, duh.
+        *
+        * @global WP $wp
+        */
+       function __construct() {
+               global $wp;
+
+               add_action( 'template_redirect', array( $this, 'oembed_provider' ), 2 );
+               add_action( 'wp_head', array( $this, 'maybe_add_discovery_tags' ) );
+
+               // Set up WordPress to accept /oembed/
+               add_rewrite_rule( 'oembed/?(.*)', 'index.php?$matches[1]&oembed=1', 'top' );
+               // @see rewrite.php in plugins to flush rules
+
+               // Tell WordPress to not ignore the "oembed" query variable
+               $wp->add_query_var( 'oembed' );
+       }
+
+
+       // Invalid (404)
+       function fourohfour() {
+               status_header( 404 );
+               exit( 'Missing or invalid URL parameter.' );
+       }
+
+
+       // oEmbed output
+       function oembed_provider() {
+               if ( ! get_query_var( 'oembed' ) ) {
+                       return false;
+               }
+
+               if ( empty( $_GET['url'] ) ) {
+                       $this->fourohfour();
+               }
+
+               if ( is_ssl() ) {
+                       $_lookup_url = str_replace( 'http:', 'https:', $_GET['url'] );
+               } else {
+                       $_lookup_url = str_replace( 'https:', 'http:', $_GET['url'] );
+               }
+
+               // Do a quick check to see if the URL starts with the blog's URL
+               if ( get_bloginfo( 'url' ) != substr( $_lookup_url, 0, strlen( get_bloginfo( 'url' ) ) ) ) {
+                       $this->fourohfour();
+               }
+
+               // Attempt to turn the URL into a post object
+               $post_ID = url_to_postid( $_lookup_url );
+               $post    = get_post( $post_ID );
+               if ( empty( $post_ID ) || ! $post ) {
+                       $this->fourohfour();
+               }
+
+               $defaults = array(
+                       'maxwidth'  => '400',
+                       'maxheight' => '300',
+               );
+
+               if ( ! empty( $_GET['maxwidth'] ) ) {
+                       $maxwidth = (int) $_GET['maxwidth'];
+               }
+               if ( empty( $maxwidth ) ) {
+                       $maxwidth = $defaults['maxwidth'];
+               }
+
+               if ( ! empty( $_GET['maxheight'] ) ) {
+                       $maxheight = (int) $_GET['maxheight'];
+               }
+               if ( empty( $maxheight ) ) {
+                       $maxheight = $defaults['maxheight'];
+               }
+
+               $data = array(
+                       'type'    => 'video',
+                       'version' => '1.0',
+               );
+
+               // Alright, let's see what kind of video is used
+               // VideoPress
+               if ( false !== stristr( $post->post_content, '[wpvideo' ) ) {
+                       preg_match( '#\[wpvideo ([a-zA-Z0-9]+)#i', $post->post_content, $guid );
+                       $guid = $guid[1];
+                       $info = function_exists( 'video_get_info_by_guid' ) ? video_get_info_by_guid( $guid ) : new StdClass;
+                       if ( empty( $guid ) || ! $info ) {
+                               status_header( 500 );
+                               exit( 'An error has occurred on our end. Please contact WordPress.com support.' );
+                       }
+
+                       list( $width, $height ) = wp_expand_dimensions( $info->width, $info->height, $maxwidth, $maxheight );
+
+                       $data['title']  = $info->title;
+                       $data['width']  = $width;
+                       $data['height'] = $height;
+                       $data['html']   = '<embed src="//v.wordpress.com/' . $info->guid . '" type="application/x-shockwave-flash" width="' . $width . '" height="' . $height . '" allowscriptaccess="always" allowfullscreen="true" wmode="transparent"></embed>';
+               } // Other video types aren't supported quite yet
+               else {
+                       status_header( 501 );
+                       exit( 'Support has not been added for this non-VideoPress type video yet.' );
+               }
+
+               // Figure out the format
+               $format = 'json';
+               if ( ! empty( $_GET['format'] ) ) {
+                       $format = $_GET['format'];
+               }
+
+               // Output the response
+               switch ( $format ) {
+                       case 'json':
+                               header( 'Content-Type: application/json' );
+                               echo json_encode( $data );
+                               exit();
+                       case 'xml':
+                               header( 'Content-Type: text/xml' );
+                               echo '<' . '?xml version="1.0" encoding="utf-8" standalone="yes"?>' . "\n";
+                               echo "<oembed>\n";
+                               foreach ( $data as $tag => $value ) {
+                                       echo "     <{$tag}>" . htmlspecialchars( $value ) . "</{$tag}>\n";
+                               }
+                               echo '</oembed>';
+                               exit();
+                       default;
+                               header( 'HTTP/1.0 501 Not Implemented' );
+                               exit();
+               }
+       }
+
+
+       // If it's a single post that uses VideoPress, add discovery tags
+       function maybe_add_discovery_tags() {
+               if ( is_single() && stristr( get_post()->post_content, '[wpvideo' ) ) {
+                       printf( '<link rel="alternate" type="application/json+oembed" href="%1$s" title="%2$s" />' . "\n",
+                               esc_url( add_query_arg( array( 'url' => urlencode( get_permalink() ), 'format' => 'json' ), home_url( '/oembed/' ) ) ),
+                               the_title_attribute( array( 'echo' => false ) )
+                       );
+                       printf( '<link rel="alternate" type="text/xml+oembed" href="%1$s" title="%2$s" />' . "\n",
+                               esc_url( add_query_arg( array( 'url' => urlencode( get_permalink() ), 'format' => 'xml' ), home_url( '/oembed/' ) ) ),
+                               the_title_attribute( array( 'echo' => false ) )
+                       );
+               }
+       }
+}
+
+add_action( 'init', 'WordCampTV_oEmbed', 5 );
+function WordCampTV_oEmbed() {
+       global $WordCampTV_oEmbed;
+       $WordCampTV_oEmbed = new WordCampTV_oEmbed();
+}
</ins></span></pre></div>
<a id="sitestrunkwordpresstvpublic_htmlwpcontentthemeswptv2pluginswordpresstvrestwordpresstvrestphp"></a>
<div class="addfile"><h4 style="background-color: #eee; color: inherit; margin: 1em 0; padding: 1.3em; font-size: 115%">Added: sites/trunk/wordpress.tv/public_html/wp-content/themes/wptv2/plugins/wordpresstv-rest/wordpresstv-rest.php</h4>
<pre class="diff"><span>
<span class="info" style="display: block; padding: 0 10px; color: #888">--- sites/trunk/wordpress.tv/public_html/wp-content/themes/wptv2/plugins/wordpresstv-rest/wordpresstv-rest.php                                (rev 0)
+++ sites/trunk/wordpress.tv/public_html/wp-content/themes/wptv2/plugins/wordpresstv-rest/wordpresstv-rest.php  2014-12-03 20:10:33 UTC (rev 1024)
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -0,0 +1,106 @@
</span><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+<?php
+
+/**
+ * WordPress.tv REST APi
+ *
+ */
+class WordPressTV_REST_API {
+
+       /**
+        * Constructor fired during init.
+        *
+        * @global WP $wp
+        */
+       function __construct() {
+               global $wp;
+
+               add_action( 'template_redirect', array( $this, 'template_redirect' ), 2 );
+               add_rewrite_rule( 'api/(.*)', 'index.php?wptvapi=$matches[1]', 'top' );
+               // @see rewrite.php in plugins to flush rules
+
+               // ?unisubs and ?guid query variables.
+               $wp->add_query_var( 'wptvapi' );
+       }
+
+       /**
+        * Returns a 404 status header and exits.
+        */
+       function fourohfour() {
+               status_header( 404 );
+               exit( 'Invalid request.' );
+       }
+
+       function template_redirect() {
+               global $wp_query, $post, $wptv;
+
+               if ( ! get_query_var( 'wptvapi' ) ) {
+                       return;
+               }
+
+               $matches = array();
+               if ( ! preg_match( '/^(.+)\.(json|array)$/i', get_query_var( 'wptvapi' ), $matches ) ) {
+                       $this->error( 'Invalid request.' );
+               }
+
+               $method   = $matches[1];
+               $format   = $matches[2];
+               $response = array();
+
+               switch ( $method ) {
+                       case 'videos':
+                               if ( isset( $_REQUEST['posts_per_page'] ) ) {
+                                       query_posts( array_merge( $wp_query->query, array( 'posts_per_page' => intval( $_REQUEST['posts_per_page'] ) ) ) );
+                               }
+
+                               $response['videos'] = array();
+                               while ( have_posts() ) {
+                                       the_post();
+
+                                       // Super lame hack to get a thumbnail from VideoPress :)
+                                       ob_start();
+                                       $wptv->the_video_image( 50, null, false, false );
+                                       $thumbnail = esc_url_raw( trim( ob_get_contents() ) );
+                                       ob_end_clean();
+
+                                       $response['videos'][] = array(
+                                               'title'     => $post->post_title,
+                                               'permalink' => get_permalink( get_the_ID() ),
+                                               'thumbnail' => $thumbnail,
+                                       );
+                               }
+
+                               break;
+                       default:
+                               $this->error( 'Unknown method.' );
+                               break;
+               }
+
+               if ( ! empty( $response ) ) {
+                       switch ( $format ) {
+                               case 'json':
+                                       echo json_encode( $response );
+                                       break;
+                               case 'array':
+                                       if ( defined( 'WPCOM_SANDBOXED' ) && WPCOM_SANDBOXED ) {
+                                               print_r( $response );
+                                       }
+                                       break;
+                       }
+                       die();
+               }
+
+               $this->error( 'Empty response.' );
+               die();
+       }
+
+       function error( $message, $http_code = 404 ) {
+               status_header( $http_code );
+               exit( $message );
+       }
+}
+
+// Initialize the object.
+add_action( 'init', 'wptv_rest_api_init', 5 );
+function wptv_rest_api_init() {
+       $wptv_rest_api = new WordPressTV_REST_API();
+}
</ins></span></pre></div>
<a id="sitestrunkwordpresstvpublic_htmlwpcontentthemeswptv2pluginswordpresstvunisubswordpresstvunisubsphp"></a>
<div class="addfile"><h4 style="background-color: #eee; color: inherit; margin: 1em 0; padding: 1.3em; font-size: 115%">Added: sites/trunk/wordpress.tv/public_html/wp-content/themes/wptv2/plugins/wordpresstv-unisubs/wordpresstv-unisubs.php</h4>
<pre class="diff"><span>
<span class="info" style="display: block; padding: 0 10px; color: #888">--- sites/trunk/wordpress.tv/public_html/wp-content/themes/wptv2/plugins/wordpresstv-unisubs/wordpresstv-unisubs.php                          (rev 0)
+++ sites/trunk/wordpress.tv/public_html/wp-content/themes/wptv2/plugins/wordpresstv-unisubs/wordpresstv-unisubs.php    2014-12-03 20:10:33 UTC (rev 1024)
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -0,0 +1,207 @@
</span><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+<?php
+
+/**
+ * Universal Subtitles for WordPress.tv
+ *
+ * This class is included from the WordPress.tv VIP theme's function.php file.
+ * Provides a /unisubs/ end-point for Universal Subtitles to access stuff via HTTP.
+ *
+ * @global WP $wp
+ */
+class WordCampTV_Unisubs {
+
+       /**
+        * Constructor fired during init.
+        */
+       function __construct() {
+               global $wp;
+
+               add_action( 'template_redirect', array( &$this, 'template_redirect' ), 2 );
+               add_rewrite_rule( 'unisubs/?(.*)', 'index.php?$matches[1]&unisubs=1', 'top' );
+               // @see rewrite.php in plugins to flush rules
+
+               // ?unisubs and ?guid query variables.
+               $wp->add_query_var( 'unisubs' );
+               $wp->add_query_var( 'guid' );
+
+               // Let's change the videopress.js file. @todo: Uncomment this before going live with Unisubs. OR dequeue it.
+               // add_filter( 'script_loader_src', array( &$this, 'script_loader_src' ), 10, 2 );
+       }
+
+       /**
+        * Returns a 404 status header and exits.
+        */
+       function fourohfour() {
+               status_header( 404 );
+               exit( 'Invalid request.' );
+       }
+
+       /**
+        * Returns a $post object by searching for the wpvideo guid or false.
+        *
+        * @param int $guid ID.
+        *
+        * @return bool
+        */
+       function get_post_by_guid( $guid ) {
+               $posts = get_posts( array( 's' => "[wpvideo $guid]", 'post_status' => 'publish' ) );
+               if ( $posts ) {
+                       return $posts[0];
+               }
+
+               return false;
+       }
+
+       /**
+        * Unisubs API output and ?guid= redirect hook, fired during
+        * template_redirect, output in ?format=(json|xml)
+        */
+       function template_redirect() {
+
+               // If a ?guid has been specified, but not a /unisubs/ endpoint, redirect
+               // to the post permalink. Allows requests like http://wordpress.tv/?guid=nWoZmCPz
+               if ( get_query_var( 'guid' ) && ! get_query_var( 'unisubs' ) ) {
+                       $post = $this->get_post_by_guid( get_query_var( 'guid' ) );
+                       if ( $post ) {
+                               wp_redirect( get_permalink( $post ) );
+                               exit();
+                       }
+               }
+
+               // Is this a /unisubs/ endpoint?
+               if ( ! get_query_var( 'unisubs' ) ) {
+                       return false;
+               }
+
+               // Either ?guid or ?url must be present for /unisubs/
+               if ( ! isset( $_GET['guid'] ) && ! isset( $_GET['url'] ) ) {
+                       $this->fourohfour();
+               }
+
+               $post    = false;
+               $post_id = 0;
+
+               if ( isset( $_GET['guid'] ) ) {
+                       $post = $this->get_post_by_guid( $_GET['guid'] );
+                       if ( ! $post ) {
+                               $this->fourohfour();
+                       }
+               }
+
+               if ( isset( $_GET['url'] ) ) {
+                       // Do a quick check to see if the URL starts with the blog's URL
+                       if ( home_url() != substr( $_GET['url'], 0, strlen( home_url() ) ) ) {
+                               $this->fourohfour();
+                       }
+
+                       $post_id = url_to_postid( $_GET['url'] );
+                       if ( empty( $post_id ) || ! $post = get_post( $post_id ) ) {
+                               $this->fourohfour();
+                       }
+               }
+
+               // Works with VideoPress videos only.
+               if ( false == stristr( $post->post_content, '[wpvideo' ) ) {
+                       status_header( 501 );
+                       exit( 'Support has not been added for this non-VideoPress type video yet.' );
+               }
+
+               $data = array(
+                       'type'      => 'video',
+                       'version'   => '1.0',
+                       'permalink' => esc_url_raw( get_permalink( $post_id ) ),
+               );
+
+               // Search for VideoPress.
+               preg_match( '#\[wpvideo ([a-zA-Z0-9]+)#i', $post->post_content, $guid );
+               $guid = $guid[1];
+               $info = function_exists( 'video_get_info_by_guid' ) ? video_get_info_by_guid( $guid ) : new StdClass;
+               if ( empty( $guid ) || ! $info ) {
+                       status_header( 500 );
+                       exit( 'An error has occurred on our end. Please contact WordPress.com support.' );
+               }
+
+               list( $width, $height ) = array( $info->width, $info->height );
+
+               // Let's try and get the best thumbnail available.
+               $thumb = false;
+               foreach ( array( 'hd_files', 'dvd_files', 'std_files' ) as $key ) {
+                       if ( isset( $info->{$key} ) && ! $thumb ) {
+                               $files = maybe_unserialize( $info->{$key} );
+                               $thumb = isset( $files['original_img'] ) ? $files['original_img'] : false;
+                       }
+               }
+
+               $data['guid']        = $info->guid;
+               $data['post_id']     = $post->ID;
+               $data['title']       = ! empty( $post->post_title ) ? $post->post_title : 'Untitled';
+               $data['description'] = ! empty( $info->description ) ? $info->description : 'No description given.';
+               $data['thumbnail']   = esc_url_raw( sprintf( 'http://videos.videopress.com/%s/%s', $info->guid, $thumb ) );
+
+               $data['width']    = absint( $width );
+               $data['height']   = absint( $height );
+               $data['duration'] = absint( $info->duration );
+               $data['swf']      = esc_url_raw( sprintf( 'http://v.wordpress.com/wp-content/plugins/video/assets/player.wptv.swf?guid=%s', $info->guid ) );
+
+               // Redirect to the SWF file if we need to.
+               if ( isset( $_GET['redirect_to_swf'] ) ) {
+                       wp_redirect( $data['swf'] );
+                       exit();
+               }
+
+               $format = 'json';
+               if ( ! empty( $_GET['format'] ) ) {
+                       $format = strtolower( $_GET['format'] );
+               }
+
+               // Output the response based on $format.
+               switch ( $format ) {
+                       case 'json':
+                               header( 'Content-Type: application/json' );
+                               echo json_encode( $data );
+                               exit();
+                       case 'xml':
+                               header( 'Content-Type: text/xml' );
+                               echo '<' . '?xml version="1.0" encoding="utf-8" standalone="yes"?>' . "\n";
+                               echo "<item>\n";
+                               foreach ( $data as $tag => $value ) {
+                                       echo "     <{$tag}>" . htmlspecialchars( $value ) . "</{$tag}>\n";
+                               }
+                               echo '</item>';
+                               exit();
+                       case 'array': // useful for debugging
+                               if ( defined( 'WPCOM_SANDBOXED' ) && WPCOM_SANDBOXED ) {
+                                       print_r( $data );
+                                       exit();
+                               }
+                               break;
+                       default:
+                               header( 'HTTP/1.0 501 Not Implemented' );
+                               exit();
+               }
+       }
+
+       /**
+        * Replaces the src= for VideoPress into a special videopress.wptv.js,
+        * filters script_loader_src. Note: not used yet.
+        *
+        * @param string $src
+        * @param string $handle
+        *
+        * @return string
+        */
+       function script_loader_src( $src, $handle ) {
+               if ( $handle == 'videopress' ) {
+                       $src = plugins_url( '/video/assets/js/videopress.wptv.js' );
+               }
+
+               return $src;
+       }
+}
+
+// Initialize the object.
+add_action( 'init', 'wptv_unisubs_init', 5 );
+function wptv_unisubs_init() {
+       global $wptv_unisubs;
+       $wptv_unisubs = new WordCampTV_Unisubs();
+}
</ins></span></pre></div>
<a id="sitestrunkwordpresstvpublic_htmlwpcontentthemeswptv2pluginswordpresstvuploadsubtitleswordpresstvuploadsubtitlesphp"></a>
<div class="addfile"><h4 style="background-color: #eee; color: inherit; margin: 1em 0; padding: 1.3em; font-size: 115%">Added: sites/trunk/wordpress.tv/public_html/wp-content/themes/wptv2/plugins/wordpresstv-upload-subtitles/wordpresstv-upload-subtitles.php</h4>
<pre class="diff"><span>
<span class="info" style="display: block; padding: 0 10px; color: #888">--- sites/trunk/wordpress.tv/public_html/wp-content/themes/wptv2/plugins/wordpresstv-upload-subtitles/wordpresstv-upload-subtitles.php                                (rev 0)
+++ sites/trunk/wordpress.tv/public_html/wp-content/themes/wptv2/plugins/wordpresstv-upload-subtitles/wordpresstv-upload-subtitles.php  2014-12-03 20:10:33 UTC (rev 1024)
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -0,0 +1,529 @@
</span><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+<?php
+
+/**
+ * Subtitles Upload Handling
+ *
+ * Works with the form in the upload-subtitles-template.php page template.
+ * Based on (copy pasted from) the anonymous video upload form by Androw Ozz.
+ */
+class WordPressTV_Subtitles_Upload {
+       // hardcoded user_id for the fake contributor that owns the drafts (username: anonvideoupload)
+       private $drafts_author = 34340661;
+
+       private $video_id;
+
+       function __construct() {
+               add_action( 'admin_post_wptv_video_upload_subtitles', array( $this, 'post' ) );
+               add_action( 'admin_post_nopriv_wptv_video_upload_subtitles', array( $this, 'post' ) );
+               add_action( 'edit_form_after_title', array( $this, 'in_post_edit_form' ) );
+               add_action( 'all_admin_notices', array( $this, 'pending_notice' ) );
+
+               add_filter( 'attachment_fields_to_save', array( $this, 'moderate' ) );
+               add_filter( 'views_upload', array( $this, 'views_links' ) );
+               add_filter( 'post_mime_types', array( $this, 'post_mime_types' ) );
+       }
+
+       /**
+        * Creates the attachment if it's a valid file
+        *
+        * @uses wp_handle_upload
+        */
+       function handle_upload() {
+               // allow only video mimes
+               $overrides = array(
+                       'test_form' => false,
+                       'mimes'     => array(
+                               'ttml' => 'application/ttml+xml',
+                               'dfxp' => 'application/ttml+xml', // .dfxp is changed to .ttml in $this->generate_filename()
+                       ),
+               );
+
+               unset( $_FILES['async-upload'] );
+
+               if ( empty( $_FILES['wptv_subtitles_file']['name'] ) ) {
+                       return new WP_Error( 'upload_error', 'Invalid file name.' );
+               }
+
+               $name = $_FILES['wptv_subtitles_file']['name'];
+               add_filter( 'wp_handle_upload_prefilter', array( $this, 'generate_filename' ), 5 );
+
+               $file = wp_handle_upload( $_FILES['wptv_subtitles_file'], $overrides );
+
+               if ( isset( $file['error'] ) ) {
+                       return new WP_Error( 'upload_error', $file['error'] );
+               }
+
+               $filepath = $file['file'];
+
+               $attachment                   = array();
+               $attachment['post_title']     = $this->sanitize_text( $name );
+               $attachment['guid']           = $file['url'];
+               $attachment['post_mime_type'] = $file['type'];
+               $attachment['post_content']   = '';
+               $attachment['post_author']    = $this->drafts_author;
+
+               // expects slashed
+               $attachment_id = wp_insert_attachment( add_magic_quotes( $attachment ), $filepath );
+
+               if ( ! is_wp_error( $attachment_id ) ) {
+                       wp_update_attachment_metadata( $attachment_id, wp_generate_attachment_metadata( $attachment_id, $filepath ) );
+               }
+
+               return $attachment_id;
+       }
+
+       /**
+        * Generate a non-guessable filename for uploaded files.
+        *
+        * @param string $file
+        *
+        * @return string
+        */
+       function generate_filename( $file ) {
+               $name_parts = pathinfo( $file['name'] );
+
+               // this should never happen
+               if ( empty( $name_parts['extension'] ) ) {
+                       die;
+               }
+
+               // Change .dfxp to .ttml
+               if ( 'dfxp' == strtolower( $name_parts['extension'] ) ) {
+                       $name_parts['extension'] = 'ttml';
+               }
+
+               // random file name
+               $str          = md5( time() . rand( 1, 1000000 ) );
+               $file['name'] = 'subtitles-' . substr( $str, rand( 5, 20 ), 10 ) . '.' . $name_parts['extension'];
+
+               return $file;
+       }
+
+       /**
+        * When the POST request is fired with the subtitles form and action.
+        */
+       function post() {
+               if ( empty( $_POST['wptv-upload-subtitles-nonce'] ) || ! wp_verify_nonce( $_POST['wptv-upload-subtitles-nonce'], 'wptv-upload-subtitles' ) ) {
+                       wp_die( 'Invalid form data. Please go back and try again.' );
+               }
+
+               if ( empty( $_POST['wptv_video_id'] ) ) {
+                       wp_die( 'Requires a video context.' );
+               }
+
+               $video_id       = absint( $_POST['wptv_video_id'] );
+               $this->video_id = $video_id;
+
+               if ( function_exists( 'wp_attachment_is_video' ) && ! wp_attachment_is_video( $video_id ) ) {
+                       wp_die( 'You can only subtitle videos.' );
+               }
+
+               if ( empty( $_POST['wptv_wporg_username'] ) || empty( $_POST['wptv_author_email'] ) || ! is_email( $_POST['wptv_author_email'] ) ) {
+                       $this->error( 4 );
+               }
+
+               $wporg_username = $this->sanitize_text( $_POST['wptv_wporg_username'] );
+               $author_email   = $this->sanitize_text( $_POST['wptv_author_email'] );
+
+               if ( empty( $_POST['wptv_language'] ) ) {
+                       $this->error( 8 );
+               }
+
+               $language            = $_POST['wptv_language'];
+               $available_languages = class_exists( 'VideoPress_Subtitles' ) ? VideoPress_Subtitles::get_languages() : array();
+
+               if ( ! array_key_exists( $language, $available_languages ) ) {
+                       $this->error( 7 );
+               }
+
+               $language = $available_languages[ $language ];
+
+               $video_data       = function_exists( 'video_get_info_by_blogpostid' ) ? video_get_info_by_blogpostid( get_current_blog_id(), $video_id ) : new StdClass;
+               $video_attachment = get_post( $video_id );
+               if ( empty( $video_data ) || empty( $video_attachment ) ) {
+                       wp_die( 'Invalid form data.' );
+               }
+
+               $parent = get_post( $video_attachment->post_parent );
+
+               if ( ! $parent || 'publish' != $parent->post_status ) {
+                       wp_die( 'You can not subtitle this video.' );
+               }
+
+               $tracks = class_exists( 'VideoPress_Subtitles' ) ? VideoPress_Subtitles::get_tracks( $video_data->guid ) : array();
+               if ( ! empty( $tracks[ $language['key'] ] ) ) {
+                       $this->error( 8 );
+               }
+
+               if ( empty( $_FILES['wptv_subtitles_file']['name'] ) ) {
+                       $this->error( 1 );
+               }
+
+               // quick file extension check
+               $name_parts = pathinfo( $_FILES['wptv_subtitles_file']['name'] );
+
+               if ( ! empty( $name_parts['extension'] ) ) {
+                       if ( ! in_array( strtolower( $name_parts['extension'] ), array( 'ttml', 'dfxp' ), true ) ) {
+                               $this->error( 2 );
+                       }
+               } else {
+                       $this->error( 3 );
+               }
+
+               // empty the globals just in case
+               $_POST = $_REQUEST = $_GET = array();
+
+               $subs_attachment_id = $this->handle_upload();
+
+               if ( is_wp_error( $subs_attachment_id ) ) {
+                       $this->error( 5 );
+               }
+
+               // TODO: needed?? Better to test in $this->handle_upload() and return WP_Error
+               // Link the uploaded attachment
+               /*              if ( get_post_mime_type( $subs_attachment_id ) != 'application/ttml+xml' ) {
+                                       wp_delete_attachment( $subs_attachment_id );
+                                       $this->error( 2 );
+                               }
+               */
+               // TODO: needed??
+               // Not visible on wordpress.tv but is in the HTML source. However 'post_content' is public data.
+               // Used for <meta name="description" and "og:description".
+               $post_content = sprintf( "Uploaded by: %s\nLanguage: %s",
+                       $wporg_username,
+                       $language['label']
+               );
+
+               wp_update_post( array(
+                       'ID'           => $subs_attachment_id,
+                       'post_content' => $post_content,
+                       'post_title'   => sprintf( 'Subtitles: %s (%s)', $parent->post_title, $language['label'] ),
+               //      'post_parent'  => $parent->ID, // easier to look for unapproved subtitles attachment if they are "unattached"?
+               ) );
+
+               $subs_attachment_meta = array(
+                       'video_attachment_id' => $video_attachment->ID,
+                       'video_post_id'       => $parent->ID,
+                       'video_guid'          => $video_data->guid,
+                       'submitted_by'        => $wporg_username,
+                       'submitted_email'     => $author_email,
+                       'language_key'        => $language['key'],
+               //      'ip'                  => $_SERVER['REMOTE_ADDR'], // keep this for ref?
+               );
+
+               update_post_meta( $subs_attachment_id, '_wptv_submitted_subtitles', $subs_attachment_meta );
+
+               /*              // TODO: can add this on upload to indicate that there is a file being moderated.
+                               // This will block uploads of other files for the same language,
+                               // but needs change in VideoPress_Subtitles::get_tracks() in /videopress/subtitles.php
+                               // to bypass the trac when 'subtitles_post_id' == 0.
+                               // Alternatively can add some meta on the video attachment post.
+                               $subtitles = get_post_meta( $video_attachment->ID, '_videopress_subtitles', true );
+                               if ( empty( $subtitles ) )
+                                       $subtitles = array();
+
+                               $subtitles[ $language['key'] ] = array(
+                                       'language' => $language['key'],
+                                       'subtitles_post_id' => 0,
+                                       'pending_subtitles_post_id' => $subs_attachment_id,
+                               );
+
+                               if ( ! update_post_meta( $video_attachment->ID, '_videopress_subtitles', $subtitles ) ) {
+                                       wp_delete_attachment( $subs_attachment_id );
+                                       $this->error( 5 );
+                               }
+               */
+               // success() redirects to the 'subtitle' page with "Thank you for uploading" message and exits.
+               $this->success();
+       }
+
+       // Runs on 'attachment_fields_to_save' (an attachment post is being saved)
+       function moderate( $post_data ) {
+               if ( empty( $post_data['wptv-subtitles'] ) ) {
+                       return $post_data;
+               }
+
+               $approve       = ! empty( $post_data['wptv-approve-subtitles'] );
+               $attachment_id = $post_data['ID'];
+
+               $attachment_meta = get_post_meta( $attachment_id, '_wptv_submitted_subtitles', true );
+               if ( empty( $attachment_meta ) ) {
+                       wp_die( 'Missing attachment metadata.' ); // Cannot show errors other than die(...)
+               }
+
+               $parent_id           = (int) $attachment_meta['video_post_id'];
+               $video_attachment_id = (int) $attachment_meta['video_attachment_id'];
+               $language_key        = $attachment_meta['language_key'];
+               $subtitles           = $_subtitles = get_post_meta( $video_attachment_id, '_videopress_subtitles', true );
+
+               if ( empty( $subtitles ) ) {
+                       $subtitles = array();
+               }
+
+               if ( $approve ) {
+                       $subtitles[ $language_key ] = array(
+                               'language'          => $language_key,
+                               'subtitles_post_id' => $attachment_id,
+                       );
+                       // Attach the attachment
+                       $post_data['post_parent'] = $parent_id;
+               } else {
+                       unset( $subtitles[ $language_key ] );
+                       /*
+                       $subtitles[ $language_key ] = array(
+                               'language' => $language_key,
+                               'subtitles_post_id' => 0,
+                               'pending_subtitles_post_id' => $attachment_id,
+                       );
+                       */
+                       // Detach the attachment
+                       $post_data['post_parent'] = 0;
+               }
+
+               if ( $subtitles != $_subtitles ) {
+                       if ( empty( $subtitles ) ) {
+                               delete_post_meta( $video_attachment_id, '_videopress_subtitles' );
+                       } else {
+                               update_post_meta( $video_attachment_id, '_videopress_subtitles', $subtitles );
+                       }
+               }
+
+               return $post_data;
+       }
+
+       // Output the HTML for moderation
+       function in_post_edit_form( $attachment_post ) {
+               if ( $attachment_post->post_type != 'attachment' || $attachment_post->post_mime_type != 'application/ttml+xml' ) {
+                       return;
+               }
+
+               // Added meta to these existing subtitles posts:
+               // done: 17732,21488,21578,21987,22063,22064,22065,22066,22144,
+               // remain: 17295,17297,22459 // all are tests
+
+               $file_content = file_get_contents( wp_get_attachment_url( $attachment_post->ID ) );
+               if ( ! $file_content ) {
+                       echo '<div class="error"><p>ERROR: the attached file doesn\'t exist or is empty.</p></div>';
+
+                       return;
+               }
+
+               $attachment_meta = get_post_meta( $attachment_post->ID, '_wptv_submitted_subtitles', true );
+               if ( empty( $attachment_meta ) ) {
+                       echo '<div class="error"><p>ERROR: the attachment post metadata is missing.</p></div>';
+
+                       return;
+               }
+
+               $is_approved         = $another_approved = false;
+               $video_attachment_id = (int) $attachment_meta['video_attachment_id'];
+               $parent_id           = (int) $attachment_meta['video_post_id'];
+               $language_key        = $attachment_meta['language_key'];
+               $subtitles           = get_post_meta( $video_attachment_id, '_videopress_subtitles', true );
+
+               if ( is_array( $subtitles ) && ! empty( $subtitles[ $language_key ]['subtitles_post_id'] ) ) {
+                       if ( $subtitles[ $language_key ]['subtitles_post_id'] == $attachment_post->ID ) {
+                               $is_approved = true;
+                       } else {
+                               // Has another approved subtitles file
+                               $another_approved = (int) $subtitles[ $language_key ]['subtitles_post_id'];
+                       }
+               }
+
+               // Add some line breaks to make it easier to read
+               $file_content = str_replace( array( "\r", '>', '<' ), array( '', ">\n", "\n<" ), $file_content );
+               $file_content = preg_replace( '/\n\n+/', "\n\n", trim( $file_content ) );
+
+               // Replace any urlencoded bits with '?'. Maybe flag this too, there shouldn't be any?
+               $match = array();
+               while ( preg_match( '/%[a-f0-9]{2}/i', $file_content, $match ) ) {
+                       $file_content = str_replace( $match[0], '?', $file_content );
+               }
+
+               // Replace any escaped <br/> inside the subtitles strings. Makes it easier to read.
+               $file_content = str_replace( array( '&lt;br /&gt;', '&lt;br/&gt;' ), "<br />\n", $file_content );
+
+               $file_content = htmlspecialchars( $file_content, ENT_QUOTES, 'UTF-8' );
+               $file_content = str_replace( "\n", '<br>', $file_content );
+
+               ?>
+               <div id="subs-wrapper">
+                       <style type="text/css" scoped="">
+                               #subs-wrapper {
+                                       margin: 20px 0;
+                               }
+
+                               #subs-content {
+                                       padding: 10px;
+                                       border: 1px solid #ccc;
+                                       margin-top: 0;
+                                       overflow: auto;
+                                       max-height: 400px;
+                                       background-color: #fff;
+                                       font-family: Consolas, Monaco, monospace;
+                               }
+
+                               #subs-wrapper .subs-approved {
+                                       background-color: #f9f9f9;
+                                       border: 1px solid #dfdfdf;
+                                       border-radius: 3px;
+                                       padding: 10px;
+                               }
+
+                               #subs-wrapper .subs-approved label {
+                                       font-size: 120%;
+                               }
+
+                               #subs-wrapper .subs-approved input[type="checkbox"] {
+                                       margin: 1px 5px;
+                               }
+
+                               #subs-wrapper .warning {
+                                       color: #dd0000;
+                               }
+                       </style>
+                       <strong>Content of the subtitles file</strong><br>
+
+                       <div id="subs-content"><?php echo $file_content; ?></div>
+
+                       <div class="subs-info">
+                               <input type="hidden" name="wptv-subtitles" value="1"/>
+
+                               <p><a href="<?php echo esc_url( get_permalink( $parent_id ) ); ?>" target="_blank">Preview</a> the video (opens in
+                                       new tab).</p>
+
+                               <p>Submitted by: <a
+                                               href="http://profiles.wordpress.org/<?php echo esc_attr( $attachment_meta['submitted_by'] ); ?>/"><?php echo esc_html( $attachment_meta['submitted_by'] ); ?></a>,
+                                       email: <a
+                                               href="mailto:<?php echo esc_attr( $attachment_meta['submitted_email'] ); ?>"><?php echo esc_html( $attachment_meta['submitted_email'] ); ?></a>
+                               </p>
+
+                               <p><a href="<?php echo esc_url( get_edit_post_link( $video_attachment_id ) ); ?>">Edit</a> the video attachment
+                                       post.</p>
+                               <?php
+
+                               if ( $another_approved ) {
+                                       ?>
+                                       <p class="subs-approved">
+                                               <span class="warning">WARNING:</span> There is <a href="<?php echo esc_url( get_edit_post_link( $another_approved ) ); ?>">another approved subtitles
+                                                       file</a>
+                                               for this video and language. If you approve the current file, the other will be automatically
+                                               unapproved.</p>
+                               <?php
+                               }
+
+                               ?>
+                               <p class="subs-approved"><label><input type="checkbox"
+                                                                      name="wptv-approve-subtitles"<?php echo $is_approved ? ' checked="checked"' : ''; ?> />
+                                               Approved</label></p>
+                       </div>
+               </div>
+       <?php
+       }
+
+       /**
+        * Add "Subtitles (..)" link to the view links on the Media Library screen.
+        *
+        * If post_mime_types in wp_match_mime_types() and
+        * class-wp-media-list-table.php were working well, this would not
+        * be needed.
+        *
+        * @param array $links
+        *
+        * @return array
+        */
+       function views_links( $links ) {
+               $mime_type = 'application/ttml+xml';
+
+               $all_subs = wp_count_attachments( $mime_type );
+               $class    = '';
+
+               if ( ! empty( $_GET['post_mime_type'] ) && $mime_type == $_GET['post_mime_type'] ) {
+                       $class = ' class="current"';
+               }
+
+               $links['wptv_subs'] = '<a href="upload.php?post_mime_type=' . urlencode( $mime_type ) . '"' . $class . '>Subtitles <span class="count">(' . $all_subs->$mime_type . ')</span></a>';
+
+               return $links;
+       }
+
+       /**
+        * Output "Need moderation" message
+        */
+       function pending_notice() {
+               global $wpdb, $pagenow;
+
+               $where_to_show = array( 'index.php', 'edit.php', 'upload.php' );
+
+               if ( in_array( $pagenow, $where_to_show, true ) ) {
+                       $pending_subs = $wpdb->get_var( "SELECT COUNT( 1 ) FROM $wpdb->posts WHERE post_type = 'attachment' AND post_status != 'trash' AND post_parent = 0 AND post_mime_type = 'application/ttml+xml'" );
+
+                       if ( $pending_subs ) {
+                               echo '<div class="updated"><p><a href="upload.php?post_mime_type=' . urlencode( 'application/ttml+xml' ) .
+                                    '&amp;detached=1">Subtitles awaiting moderation (' . $pending_subs . ')</a></p></div>';
+                       }
+               }
+       }
+
+       /**
+        * Add support fot the subtitles mime type. This should work better in core...
+        *
+        * @param $mime_types
+        *
+        * @return mixed
+        */
+       function post_mime_types( $mime_types ) {
+               $mime_types['application/ttml+xml'] = array(
+                       __( 'Subtitles' ),
+                       __( 'Manage Subtitles' ),
+                       _n_noop( 'Subtitles <span class="count">(%s)</span>', 'Subtitles <span class="count">(%s)</span>' )
+               );
+
+               return $mime_types;
+       }
+
+       /**
+        * Create an error and redirect.
+        *
+        * @param string $message
+        */
+       function error( $message ) {
+               wp_safe_redirect( add_query_arg( array(
+                       'video' => $this->video_id,
+                       'error' => $message,
+               ), home_url( 'subtitle' ) ) );
+               die();
+       }
+
+       /**
+        * Redirect to a success page.
+        */
+       function success() {
+               wp_safe_redirect( add_query_arg( array(
+                       'video'   => $this->video_id,
+                       'success' => 1,
+               ), home_url( 'subtitle' ) ) );
+               exit;
+       }
+
+       // expects slashed, returns unslashed
+       function sanitize_text( $str, $remove_line_breaks = true ) {
+               $str = str_replace( '\\', '', $str );
+
+               if ( $remove_line_breaks ) {
+                       $str = sanitize_text_field( $str );
+               } else {
+                       $str = wp_check_invalid_utf8( $str );
+                       $str = wp_strip_all_tags( $str );
+
+                       $match = array();
+                       while ( preg_match( '/%[a-f0-9]{2}/i', $str, $match ) ) {
+                               $str = str_replace( $match[0], '', $str );
+                       }
+               }
+
+               return htmlspecialchars( $str, ENT_QUOTES, 'UTF-8' );
+       }
+}
+
+new WordPressTV_Subtitles_Upload;
</ins></span></pre></div>
<a id="sitestrunkwordpresstvpublic_htmlwpcontentthemeswptv2searchphp"></a>
<div class="addfile"><h4 style="background-color: #eee; color: inherit; margin: 1em 0; padding: 1.3em; font-size: 115%">Added: sites/trunk/wordpress.tv/public_html/wp-content/themes/wptv2/search.php</h4>
<pre class="diff"><span>
<span class="info" style="display: block; padding: 0 10px; color: #888">--- sites/trunk/wordpress.tv/public_html/wp-content/themes/wptv2/search.php                           (rev 0)
+++ sites/trunk/wordpress.tv/public_html/wp-content/themes/wptv2/search.php     2014-12-03 20:10:33 UTC (rev 1024)
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -0,0 +1,11 @@
</span><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+<?php
+global $wp_query;
+
+// See improved improved (yes, improved twice) search.
+/*if ( $wp_query->is_search() ) {
+       $query = wptv_search_taxonomies( $wp_query->query_vars['s'] );
+       $wp_query->posts = array_merge( $wp_query->posts, $query->posts );
+       $wp_query->post_count = count( $wp_query->posts );
+}*/
+
+get_template_part( 'archive' );
</ins></span></pre></div>
<a id="sitestrunkwordpresstvpublic_htmlwpcontentthemeswptv2sidebareventphp"></a>
<div class="addfile"><h4 style="background-color: #eee; color: inherit; margin: 1em 0; padding: 1.3em; font-size: 115%">Added: sites/trunk/wordpress.tv/public_html/wp-content/themes/wptv2/sidebar-event.php</h4>
<pre class="diff"><span>
<span class="info" style="display: block; padding: 0 10px; color: #888">--- sites/trunk/wordpress.tv/public_html/wp-content/themes/wptv2/sidebar-event.php                            (rev 0)
+++ sites/trunk/wordpress.tv/public_html/wp-content/themes/wptv2/sidebar-event.php      2014-12-03 20:10:33 UTC (rev 1024)
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -0,0 +1,5 @@
</span><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+<div class="secondary-content">
+       <ul>
+               <?php dynamic_sidebar(); ?>
+       </ul>
+</div>
</ins><span class="cx" style="display: block; padding: 0 10px">\ No newline at end of file
</span></span></pre></div>
<a id="sitestrunkwordpresstvpublic_htmlwpcontentthemeswptv2sidebarsinglephp"></a>
<div class="addfile"><h4 style="background-color: #eee; color: inherit; margin: 1em 0; padding: 1.3em; font-size: 115%">Added: sites/trunk/wordpress.tv/public_html/wp-content/themes/wptv2/sidebar-single.php</h4>
<pre class="diff"><span>
<span class="info" style="display: block; padding: 0 10px; color: #888">--- sites/trunk/wordpress.tv/public_html/wp-content/themes/wptv2/sidebar-single.php                           (rev 0)
+++ sites/trunk/wordpress.tv/public_html/wp-content/themes/wptv2/sidebar-single.php     2014-12-03 20:10:33 UTC (rev 1024)
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -0,0 +1,85 @@
</span><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+<?php global $wptv, $originalcontent; ?>
+
+<div class="secondary-content video-info">
+       <h5>Published</h5>
+                       <p class="video-date"><?php echo get_the_date(); ?></p>
+
+                       <?php if ( $post->post_excerpt ) : ?>
+                               <div class="video-description"><?php the_excerpt(); ?></div>
+                       <?php
+                               endif;
+
+                               $wptv->the_terms( 'event', '<h5>Event</h5><p class="video-event">', '<br /> ', '</p>' );
+                               $wptv->the_terms( 'speakers', '<h5>Speakers</h5><p class="video-speakers">', '<br /> ', '</p>' );
+                               $wptv->the_terms( 'post_tag', '<h5>Tags</h5><p class="video-tags">', '<br /> ', '</p>' );
+                               $wptv->the_terms( 'language', '<h5>Language</h5><p class="video-lang">', '<br /> ', '</p>' );
+
+                               if ( function_exists( 'find_all_videopress_shortcodes' ) ) {
+                                       $videos = array_keys( find_all_videopress_shortcodes( $originalcontent ) );
+                                       if ( ! empty( $videos ) ) {
+                                               $video = video_get_info_by_guid( $videos[0] );
+                                               $formats = array( 'fmt_std' => 'Low', 'fmt_dvd' => 'Med', 'fmt_hd' => 'High', 'fmt1_ogg' => 'Low' );
+                                               $mp4_links = array();
+                                               $ogg_link = NULL;
+                                               foreach ( $formats as $format => $name ) {
+                                                       if ( 'fmt1_ogg' == $format ) {
+                                                               $link = video_highest_resolution_ogg( $video );
+                                                       } else {
+                                                               $link = video_url_by_format( $video, $format );
+                                                       }
+
+                                                       if ( empty( $link ) ) {
+                                                               continue;
+                                                       }
+
+                                                       if ( 'fmt1_ogg' == $format ) {
+                                                               $ogg_link = "<a href='$link'>$name</a>";
+                                                       } else {
+                                                               $mp4_links[] = "<a href='$link'>$name</a>";
+                                                       }
+                                               }
+
+                                               if ( ! empty( $mp4_links ) || ! empty( $ogg_link ) ) {
+?>
+                       <h5>Download</h5>
+                       <div class="video-downloads">
+<?php
+                                                       if ( ! empty( $mp4_links ) ) {
+                                                               echo 'MP4: ' . join( ', ', $mp4_links ) . '<br/>';
+                                                       }
+                                                       if ( ! empty( $ogg_link ) ) {
+                                                               echo "OGG: $ogg_link";
+                                                       }
+?>
+                       </div>
+<?php
+                                               }
+
+                                               echo '<h5>Subtitles</h5>';
+                                               $ttml_links = array();
+                                               $languages = VideoPress_Subtitles::get_languages();
+                                               $subtitles = (array) get_post_meta( $video->post_id, '_videopress_subtitles', true );
+
+                                               foreach ( $subtitles as $track ) {
+                                                       if ( empty( $track['subtitles_post_id'] ) ) {
+                                                               continue;
+                                                       }
+
+                                                       $tracks[ $track['language'] ] = new VideoPress_Subtitles_Track( array(
+                                                               'guid'              => $video->guid,
+                                                               'language'          => $track['language'],
+                                                               'subtitles_post_id' => $track['subtitles_post_id'],
+                                                       ) );
+
+                                                       $ttml_links[] = '<a href="'. $tracks[ $track['language'] ]->url() .'">'. $languages[ $track['language'] ]['localized_label'] .'</a>';
+                                               }
+
+                                               if ( ! empty( $ttml_links ) ) {
+                                                       echo 'TTML: ' . join( ', ', $ttml_links ) . '<br />';
+                                               }
+
+                                               printf( '<a href="%s">Subtitle this video &rarr;</a>', esc_url( add_query_arg( 'video', $video->post_id, home_url( 'subtitle/' ) ) ) );
+                                       }
+                               }
+                       ?>
+</div><!-- .secondary-content -->
</ins></span></pre></div>
<a id="sitestrunkwordpresstvpublic_htmlwpcontentthemeswptv2sidebarwordcamptvphp"></a>
<div class="addfile"><h4 style="background-color: #eee; color: inherit; margin: 1em 0; padding: 1.3em; font-size: 115%">Added: sites/trunk/wordpress.tv/public_html/wp-content/themes/wptv2/sidebar-wordcamptv.php</h4>
<pre class="diff"><span>
<span class="info" style="display: block; padding: 0 10px; color: #888">--- sites/trunk/wordpress.tv/public_html/wp-content/themes/wptv2/sidebar-wordcamptv.php                               (rev 0)
+++ sites/trunk/wordpress.tv/public_html/wp-content/themes/wptv2/sidebar-wordcamptv.php 2014-12-03 20:10:33 UTC (rev 1024)
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -0,0 +1,5 @@
</span><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+<div class="secondary-content">
+       <ul>
+          <?php dynamic_sidebar( 'WordCampTV Sidebar' ); ?>
+       </ul>
+</div>
</ins><span class="cx" style="display: block; padding: 0 10px">\ No newline at end of file
</span></span></pre></div>
<a id="sitestrunkwordpresstvpublic_htmlwpcontentthemeswptv2sidebarphp"></a>
<div class="addfile"><h4 style="background-color: #eee; color: inherit; margin: 1em 0; padding: 1.3em; font-size: 115%">Added: sites/trunk/wordpress.tv/public_html/wp-content/themes/wptv2/sidebar.php</h4>
<pre class="diff"><span>
<span class="info" style="display: block; padding: 0 10px; color: #888">--- sites/trunk/wordpress.tv/public_html/wp-content/themes/wptv2/sidebar.php                          (rev 0)
+++ sites/trunk/wordpress.tv/public_html/wp-content/themes/wptv2/sidebar.php    2014-12-03 20:10:33 UTC (rev 1024)
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -0,0 +1,35 @@
</span><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+<div class="secondary-content">
+       <ul>
+               <li>
+                       <h3><a href="http://blog.wordpress.tv"><?php esc_html_e( 'From the Blog', 'wptv' ); ?></a></h3>
+                       <ul>
+                               <?php
+                                       // Make it easier to contribute to this theme by not assuming multisite context.
+                                       if ( function_exists( 'switch_to_blog' ) ) {
+                                               switch_to_blog( 5310177 ); // blog.wordpress.tv
+                                       }
+
+                                       query_posts( 'posts_per_page=5' );
+
+                                       while ( have_posts() ) :
+                                               the_post();
+                               ?>
+                                       <li><a href="<?php the_permalink(); ?>"><?php the_title(); ?></a></li>
+                               <?php
+                                       endwhile;
+
+                                       if ( function_exists( 'restore_current_blog' ) ) {
+                                               restore_current_blog();
+                                       }
+                               ?>
+                       </ul>
+               </li>
+               <li>
+                       <h3><?php esc_html_e( 'Resources', 'wptv' ); ?></h3>
+
+                       <ul>
+                               <?php wp_list_bookmarks( 'title_li=&categorize=0' ); ?>
+                       </ul>
+               </li>
+       <ul/>
+</div><!-- .secondary_content -->
</ins><span class="cx" style="display: block; padding: 0 10px">\ No newline at end of file
</span></span></pre></div>
<a id="sitestrunkwordpresstvpublic_htmlwpcontentthemeswptv2singlephp"></a>
<div class="addfile"><h4 style="background-color: #eee; color: inherit; margin: 1em 0; padding: 1.3em; font-size: 115%">Added: sites/trunk/wordpress.tv/public_html/wp-content/themes/wptv2/single.php</h4>
<pre class="diff"><span>
<span class="info" style="display: block; padding: 0 10px; color: #888">--- sites/trunk/wordpress.tv/public_html/wp-content/themes/wptv2/single.php                           (rev 0)
+++ sites/trunk/wordpress.tv/public_html/wp-content/themes/wptv2/single.php     2014-12-03 20:10:33 UTC (rev 1024)
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -0,0 +1,32 @@
</span><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+<?php
+/**
+ * Single Video Template
+ */
+global $wptv, $originalcontent;
+get_header(); the_post();
+?>
+<div class="wptv-hero group">
+       <div class="container">
+
+               <?php get_template_part( 'breadcrumbs' ); ?>
+               <h2 class="video-title"><?php the_title(); ?></h2>
+
+               <div class="the-video">
+                       <?php $wptv->the_video(); ?>
+               </div>
+
+       </div><!-- .container -->
+</div><!-- .wptv-hero -->
+
+<div class="container">
+       <div class="primary-content">
+               <div id="content">
+                       <div id="comments">
+                               <?php comments_template(); ?>
+                       </div>
+               </div><!-- #content -->
+       </div><!-- .primary-content -->
+       <?php get_sidebar( 'single' ); ?>
+</div><!-- .container -->
+
+<?php get_footer(); ?>
</ins></span></pre></div>
<a id="sitestrunkwordpresstvpublic_htmlwpcontentthemeswptv2stylecss"></a>
<div class="addfile"><h4 style="background-color: #eee; color: inherit; margin: 1em 0; padding: 1.3em; font-size: 115%">Added: sites/trunk/wordpress.tv/public_html/wp-content/themes/wptv2/style.css</h4>
<pre class="diff"><span>
<span class="info" style="display: block; padding: 0 10px; color: #888">--- sites/trunk/wordpress.tv/public_html/wp-content/themes/wptv2/style.css                            (rev 0)
+++ sites/trunk/wordpress.tv/public_html/wp-content/themes/wptv2/style.css      2014-12-03 20:10:33 UTC (rev 1024)
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -0,0 +1,2598 @@
</span><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+/*
+Theme Name: WordPress.tv v2
+Theme URI: http://wordpress.tv
+Description: WordPress.tv v2 Theme
+Version: 2.0
+Author: Automattic
+Author URI: http://automattic.com/
+*/
+
+/* meyerweb.com/eric/thoughts/2007/05/01/reset-reloaded/ */
+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,
+dl, dt, dd, ol, ul, li,
+fieldset, form, label, legend,
+table, caption, tbody, tfoot, thead, tr, th, td {
+       margin: 0;
+       padding: 0;
+       border: 0;
+       outline: 0;
+       font-weight: inherit;
+       font-style: inherit;
+       font-size: 100%;
+       font-family: inherit;
+       vertical-align: baseline;
+}
+
+/* remember to define focus styles! */
+:focus {
+       outline: 0;
+}
+
+body {
+       line-height: 1;
+       color: black;
+       background: white;
+}
+
+ol, ul {
+       list-style: none;
+}
+
+/* tables still need 'cellspacing="0"' in the markup */
+table {
+       border-collapse: separate;
+       border-spacing: 0;
+}
+
+caption, th, td {
+       text-align: left;
+       font-weight: normal;
+}
+
+blockquote:before, blockquote:after,
+q:before, q:after {
+       content: "";
+}
+
+blockquote, q {
+       quotes: "" "";
+}
+
+/* Tables still need 'cellspacing="0"' in the markup. */
+table {
+       border-collapse: separate;
+       border-spacing: 0;
+}
+
+caption, th, td {
+       text-align: left;
+       font-weight: 400;
+}
+
+/* Remove possible quote marks (") from <q>,<blockquote>. */
+blockquote:before, blockquote:after, q:before, q:after {
+       content: "";
+}
+
+blockquote, q {
+       quotes: "" "";
+}
+
+a img {
+       border: none;
+}
+
+/* Contain floats */
+.group:before, .group:after {
+       content: "";
+       display: table;
+}
+
+.group:after {
+       clear: both;
+}
+
+.group {
+       *zoom: 1;
+}
+
+/*************************************/
+
+/* Defaults */
+body {
+       font-size: 75%; /* 16px * 0.75 = 12px */
+       line-height: 1.5em; /* 12x1.5 = 16 */
+       font-family: "Lucida Grande", "Lucida Sans Unicode", sans-serif;
+       background: #fff;
+       color: #444;
+}
+
+.group:after {
+       content: ".";
+       display: block;
+       height: 0;
+       clear: both;
+       visibility: hidden;
+}
+
+.clear {
+       clear: both;
+}
+
+a, a:link, a:visited {
+       color: #21759b;
+       text-decoration: none;
+}
+
+a:hover, a:active {
+       color: #d54e21;
+}
+
+em, cite {
+       font-style: italic;
+}
+
+strong {
+       font-weight: bold;
+}
+
+h1, h2, h3, h4, h5, h6 {
+       font-weight: normal;
+}
+
+p, pre, dl, ul, ol {
+}
+
+table, td, th, tr, thead, tbody, tfoot {
+}
+
+dd, dt, li {
+}
+
+blockquote {
+}
+
+form, fieldset, address {
+}
+
+/* Utility */
+.highlite, blockquote em {
+       background-color: #FFFCCE;
+}
+
+.none {
+       text-indent: -1000em;
+}
+
+/* Alignment */
+.alignleft, .alignright, .align-left, .align-right {
+}
+
+.alignright, .align-right, .inset {
+       float: right;
+}
+
+.alignleft, .align-left, .alternate {
+       float: left;
+}
+
+.aligncenter, .align-center {
+       margin: 0 auto;
+       text-align: center;
+}
+
+.text-left {
+       text-align: left;
+}
+
+.text-right {
+       text-align: right;
+}
+
+/* Figures & images */
+.image {
+}
+
+.figure {
+}
+
+.figure .caption {
+}
+
+/* Structure */
+#page {
+}
+
+#header {
+       margin-top: 10px;
+       height: 57px;
+}
+
+#header h1 {
+       padding-top: 8px;
+       float: left;
+}
+
+#header .sleeve {
+       width: 942px;
+       margin: 0 auto;
+}
+
+#menu ul {
+       float: right;
+       height: 57px;;
+}
+
+#menu li {
+       float: left;
+       display: block;
+       margin-left: 10px;
+       line-height: 57px;
+}
+
+#menu li a, #menu li a:link, #menu li a:visited {
+       padding: 5px;
+       color: #555;
+       text-decoration: none;
+       border: 0;
+}
+
+#menu li a:hover, #menu li a:active {
+       color: #21759b !important;
+}
+
+#menu .current-menu-item > a,
+#menu .current-menu-ancestor > a,
+#menu .current_page_item > a,
+#menu .current_page_ancestor > a {
+       font-weight: bold;
+       color: #000 !important;
+}
+
+#searchform {
+       float: right;
+       margin-left: 15px;
+}
+
+#searchform #searchbox,
+#searchform input#s {
+       box-sizing: content-box;
+       color: #AAAAAA;
+       float: left;
+       margin-right: 6px;
+       background: white;
+       border: 1px solid #ccc;
+       padding: 5px 6px;
+       margin-right: 3px;
+       -webkit-box-shadow: inset 1px 1px 1px rgba(0, 0, 0, 0.1);
+       -moz-box-shadow: inset 1px 1px 1px rgba(0, 0, 0, 0.1);
+       box-shadow: inset 1px 1px 1px rgba(0, 0, 0, 0.1);
+       border-radius: 2px;
+       vertical-align: middle;
+       height: 15px;
+       line-height: 1;
+       width: 130px;
+}
+
+#searchform #searchbox {
+       margin-top: 15px;
+}
+
+input[type=submit], button, .button {
+       text-decoration: none;
+       -moz-border-radius: 5px;
+       -webkit-border-radius: 5px;
+       border-radius: 5px;
+       border: 1px solid #ccc;
+       border-bottom-color: #aaa;
+       border-right-color: #aaa;
+       background: #f5f5f5;
+       background: -webkit-gradient(linear, left top, left bottom, from(#f7f7f7), to(#e1e1e1));
+       background: -moz-linear-gradient(top, #f7f7f7, #e1e1e1);
+       padding: 4px 8px;
+       font-size: 12px;
+       font-weight: 400;
+       color: #555 !important;
+       text-shadow: 0 1px 0 #fff;
+       -webkit-transition: all 0.25s ease-in-out;
+       -moz-transition: all 0.25s ease-in-out;
+       -o-transition: all 0.25s ease-in-out;
+       transition: all 0.25s ease-in-out;
+       -webkit-box-shadow: inset 1px 1px 1px rgba(255, 255, 255, 0.7), 1px 1px 1px rgba(0, 0, 0, 0.1);
+       -moz-box-shadow: inset 1px 1px 1px rgba(255, 255, 255, 0.7), 1px 1px 1px rgba(0, 0, 0, 0.1);
+       box-shadow: inset 1px 1px 1px rgba(255, 255, 255, 0.7), 1px 1px 1px rgba(0, 0, 0, 0.1);
+}
+
+input[type=submit]:hover, button:hover, .button:hover, input[type=submit]:focus, button:focus, .button:focus {
+       cursor: pointer;
+       color: #000 !important;
+       text-decoration: none;
+       border: 1px solid #bbb;
+       border-bottom-color: #888;
+       border-right-color: #888;
+       -webkit-box-shadow: inset 1px 1px 2px rgba(255, 255, 255, 1), 1px 1px 1px rgba(0, 0, 0, 0.2);
+       -moz-box-shadow: inset 1px 1px 2px rgba(255, 255, 255, 1), 1px 1px 1px rgba(0, 0, 0, 0.2);
+       box-shadow: inset 1px 1px 2px rgba(255, 255, 255, 1), 1px 1px 1px rgba(0, 0, 0, 0.2);
+       -webkit-transition: all 0.25s ease-in-out;
+       -moz-transition: all 0.25s ease-in-out;
+       -o-transition: all 0.25s ease-in-out;
+       transition: all 0.25s ease-in-out;
+}
+
+input[type=submit]:active, button:active, .button:active {
+       background: #ccc;
+       background: -webkit-gradient(linear, left top, left bottom, from(#bbb), to(#ddd));
+       background: -moz-linear-gradient(top, #bbb, #ddd);
+       -webkit-box-shadow: inset 0 0 4px rgba(0, 0, 0, 0.7), 0 0 0 rgba(0, 0, 0, 0);
+       -moz-box-shadow: inset 0 0 4px rgba(0, 0, 0, 0.7), 0 0 0 rgba(0, 0, 0, 0);
+       box-shadow: inset 0 0 4px rgba(0, 0, 0, 0.7), 0 0 0 rgba(0, 0, 0, 0);
+}
+
+.disabled:hover {
+       -moz-box-shadow: none;
+       -webkit-box-shadow: none;
+       box-shadow: none;
+       border-color: #ccc;
+       cursor: default;
+}
+
+.disabled:active {
+       background: #e3e3e3 url(/images/button-light.png) top left repeat-x;
+       background: -webkit-gradient(
+                       linear,
+                       left top,
+                       left bottom,
+                       color-stop(0.0, #fff),
+                       color-stop(1, #eee)
+       );
+       background: -moz-linear-gradient(
+                       center top,
+                       #fff 0%,
+                       #eee 100%
+       );
+}
+
+.intro {
+       font-size: 30px;
+       height: 64px;
+       line-height: 64px;
+       margin-bottom: 12px;
+       margin-left: 5px;
+       font-family: Georgia, "Times New Roman", Times, serif;
+       text-align: center;
+       color: #666;
+       text-shadow: #fff 0px 1px 0px;
+}
+
+.intro em {
+       font-style: italic;
+       font-variant: normal;
+       text-shadow: #eee 0px 0px 1px;
+       letter-spacing: normal;
+}
+
+/* News */
+
+.blog #content {
+       width: 704px;
+       float: left;
+       margin-bottom: 30px;
+       padding-top: 20px;
+}
+
+.blog .post h3 .post-author {
+       display: block;
+
+       font-size: 12px;
+       font-weight: normal;
+
+       color: #888;
+       margin: 5px 0;
+}
+
+.blog .post .entry {
+       float: left;
+       width: 558px;
+       padding-left: 0;
+       margin: 0 0 30px 0;
+}
+
+.entry p {
+       margin: 0 0 20px 0
+}
+
+.blog .post .excerpt {
+       width: 600px;
+}
+
+.blog .post .entry .sleeve {
+       padding-left: 10px;
+       border-left: 1px solid #ddd;
+       padding-right: 10px;
+       border-right: 1px solid #ddd;
+}
+
+.blog .post .wpcom-author {
+       float: left;
+       text-align: center;
+       width: 56px;
+       padding-right: 30px;
+       margin-right: -1px;
+}
+
+.blog .post #wpcom-author {
+       float: left;
+       text-align: center;
+       width: 136px;
+}
+
+.blog .post #wpcom-author, .blog .wpcom-author {
+       padding-right: 30px;
+       margin-right: -1px;
+}
+
+.single .postmetadata {
+       border-top: 1px solid #F1F1F1;
+       clear: both;
+       color: #999999;
+       font-size: 9px;
+       margin: 20px 0 0 0;
+       padding: 15px 0 5px 0;
+       text-align: left;
+}
+
+.blog .post #wpcom-author .postmetadata p {
+       text-align: left;
+       margin-bottom: 10px;
+}
+
+.blog .post #wpcom-author .avatar, .blog .post .wpcom-author .avatar {
+       float: none;
+       margin: 0 auto;
+       padding: 0;
+}
+
+.blog .post #wpcom-author .avatar img, .blog .post .wpcom-author .avatar img {
+       padding: 3px;
+       border: 1px solid #ddd;
+}
+
+.blog .primary-content {
+       margin: -20px 0 0 0;
+}
+
+.blog #sidebar {
+       width: 227px;
+       float: left;
+       margin-left: -1px;
+}
+
+#sidebar #search {
+       clear: both;
+       height: 30px;
+}
+
+#sidebar #s {
+       width: 130px;
+       margin-right: 5px;
+       float: left;
+}
+
+#sidebar #searchsubmit {
+       margin-top: 0;
+}
+
+#sidebar .sleeve {
+       padding-left: 10px;
+       border-left: 1px solid #ddd;
+       margin-top: 40px;
+       margin-bottom: 20px;
+       text-align: left;
+}
+
+.excerpt .sleeve {
+       padding-bottom: 20px;
+}
+
+.excerpt .postmetadata {
+       font-style: italic;
+       font-size: 9px;
+       margin-bottom: 10px;
+}
+
+.page p, .blog p {
+       margin-bottom: 1em;
+       line-height: 1.5em;
+}
+
+.blog #comments textarea {
+       width: 90%;
+}
+
+/* .blog h3 {
+margin-right: 10px;
+font-size: 18px !important;
+font-family: Georgia,"Times New Roman",Times,serif !important;
+margin-bottom: 10px !important;
+padding-top: 18px !important;
+padding-bottom: 3px !important;
+border-bottom: 1px solid #ddd !important;
+padding-left: 5px !important;
+}
+.blog h3 small {
+font-size: 14px;
+}
+
+.blog p, .blog object {
+margin-bottom: 18px;
+} */
+
+/* Captions */
+.aligncenter,
+div.aligncenter {
+       display: block;
+       margin-left: auto;
+       margin-right: auto;
+}
+
+.wp-caption {
+       border: 1px solid #ddd;
+       text-align: center;
+       background-color: #f3f3f3;
+       padding-top: 4px;
+       margin: 10px;
+       -moz-border-radius: 3px;
+       -khtml-border-radius: 3px;
+       -webkit-border-radius: 3px;
+       border-radius: 3px;
+}
+
+.wp-caption img {
+       margin: 0;
+       padding: 0;
+       border: 0 none;
+}
+
+.wp-caption p.wp-caption-text {
+       font-size: 11px;
+       line-height: 17px;
+       padding: 0 4px 5px;
+       margin: 0;
+}
+
+.tools h3 {
+
+}
+
+.tools p {
+       margin-bottom: 18px;
+       padding-left: 5px;
+}
+
+/* Title */
+
+.title h2 {
+       color: #000;
+       text-align: left;
+       margin-bottom: 10px;
+       font-size: 32px;
+       line-height: 1.1em;
+       font-family: Georgia, serif;
+}
+
+.title h2 a {
+       font-size: 18px;
+       line-height: 18px;
+       font-size: 16px;
+       font-family: "Lucida Grande", "Lucida Sans Unicode", sans-serif;
+}
+
+.title h2 a, .title h2 a:link, .title h2 a:visited {
+       color: #21759b;
+}
+
+.title h2 a:hover, .title h2 a:active {
+}
+
+.title h2.pagetitle {
+       margin-top: 20px;
+       text-align: left;
+}
+
+.title .sleeve {
+       width: 937px;
+       margin: 0 auto;
+}
+
+.title .desc,
+.title.group h2.pagetitle {
+       color: #000;
+       font-family: Georgia, serif;
+       font-size: 32px;
+       line-height: 1.1;
+       margin-bottom: 10px;
+}
+
+.home .title {
+       padding: 5px 0;
+       height: 50px;
+}
+
+.home .desc {
+       float: none;
+       margin-left: 10px;
+       line-height: 50px;
+       color: #31ade5;
+       clear: both;
+}
+
+div.desc p {
+       font-size: 16px;
+       color: #666;
+}
+
+/* Video Wrapper */
+
+.videowrapper {
+       clear: both;
+
+       margin: 10px auto 14px auto;
+       padding-bottom: 4px;
+
+       background: #F0F0F0;
+       border: 1px #E2E2E2 solid;
+
+       box-shadow: inset 0 0 0 1px #fcfcfc;
+       -webkit-box-shadow: inset 0 0 0 1px #fcfcfc;
+       -moz-box-shadow: inset 0 0 0 1px #fcfcfc;
+}
+
+.blog .videowrapper {
+       height: 1px;
+       padding: 0;
+       margin: 0;
+}
+
+.videowrapper a, .videowrapper a:link, .videowrapper a:visited {
+       color: #f7f7f7;
+}
+
+.videowrapper a:hover, .videowrapper a:active {
+       color: #d54e21;
+}
+
+.videowrapper .sleeve {
+       width: 937px;
+       margin: 0 auto;
+       text-align: left;
+}
+
+.videowrapper .meta {
+       color: #333;
+       margin-top: -10px;
+       padding-bottom: 22px;
+       font-size: 10px;
+}
+
+h2.featured {
+       text-transform: uppercase;
+       letter-spacing: 0.2em;
+       font-size: 9px;
+       width: 100%;
+       color: #444;
+       padding-left: 5px;
+       margin-bottom: 5px;
+}
+
+.secondcolumn h2.featured {
+       font-size: 18px;
+       line-height: 1.2em;
+       text-transform: none;
+       font-family: Georgia;
+       letter-spacing: 0;
+       font-style: italic;
+}
+
+.sharedaddy * {
+       color: #666;
+       font-family: "Lucida Grande", "Lucida Sans Unicode", sans-serif !important;
+}
+
+.video-player {
+       padding: 0 !important;
+       margin-top: 19px !important;
+       margin-bottom: 10px !important;
+}
+
+.videopress-placeholder {
+       margin-top: 65px;
+       margin-bottom: 0;
+}
+
+.videopress-placeholder div img {
+       display: none;
+}
+
+.thevideo {
+       float: left;
+       width: 648px;
+       text-align: center;
+       margin: 10px 0 6px 0;
+       position: relative;
+       overflow: hidden;
+       -webkit-border-radius: 6px;
+       -moz-border-radius: 6px;
+       -khtml-border-radius: 6px;
+       border-radius: 6px;
+}
+
+.thevideo .avideo {
+       -webkit-border-radius: 6px;
+       -moz-border-radius: 6px;
+       -khtml-border-radius: 6px;
+       border-radius: 6px;
+       position: relative;
+       bottom: 0;
+       background-position: top center;
+       background-repeat: no-repeat;
+
+}
+
+.thevideo img {
+       position: absolute;
+       bottom: 6px;
+       left: 0;
+}
+
+img.videothumb {
+       width: 100%;
+}
+
+.home .thevideo, .category .thevideo, .category .thevideo .avideo {
+       height: 350px;
+}
+
+.home .thevideo {
+       margin-bottom: 0;
+}
+
+.home .title {
+       margin-bottom: 0px;
+}
+
+#rotate {
+       width: 648px;
+       float: left;
+}
+
+#rotate.ui-tabs {
+       padding: 0;
+}
+
+#rotate .ui-tabs-panel {
+       margin: 0;
+       padding: 0;
+}
+
+#rotate .ui-tabs-nav {
+       text-align: center;
+       margin: 0 auto;
+       width: 150px;
+       padding: 0;
+}
+
+#rotate .ui-tabs-nav li {
+       display: inline;
+       float: none;
+       margin: 0;
+       padding: 0;
+       width: 30px;
+       text-align: center;
+}
+
+#rotate .ui-tabs-nav a {
+       display: block;
+       float: left;
+       width: 30px;
+       text-align: center;
+       padding: 10px 0;
+}
+
+#rotate .ui-tabs-nav a span {
+       display: block;
+       width: 30px;
+       text-align: center;
+       background: 0;
+       font-size: 30px;
+       padding: 0;
+       margin: 0;
+}
+
+#rotate .ui-tabs-selected,
+#rotate .ui-tabs-selected a {
+       color: #d54e21;
+       cursor: pointer;
+}
+
+.thevideo h3 {
+       position: absolute;
+       bottom: 0px;
+       left: 0px;
+       padding: 20px 0;
+       font-size: 20px;
+       line-height: 1.3em;
+       width: 100%;
+       text-align: center;
+       background: #000;
+       -webkit-border-bottom-left-radius: 6px;
+       -webkit-border-bottom-right-radius: 6px;
+       -moz-border-radius-bottomleft: 6px;
+       -moz-border-radius-bottomright: 6px;
+       -khtml-border-bottom-left-radius: 6px;
+       -khtml-border-bottom-right-radius: 6px;
+       border-bottom-left-radius: 6px;
+       border-bottom-right-radius: 6px;
+}
+
+.ui-tabs h3 a {
+       text-align: center;
+       color: white;
+       padding: 0 3px;
+       display: block;
+       width: 100%;
+}
+
+.ui-tabs h3 a, .ui-tabs h3 a:link, .ui-tabs h3 a:visited {
+       color: white;
+}
+
+.ui-tabs h3 a:hover, .ui-tabs h3 a:active {
+}
+
+.thevideo .ui-tabs-panel {
+       height: 350px;
+       overflow: hidden;
+       position: relative;
+}
+
+.thevideo a.hiddenpanel {
+       position: absolute;
+       z-index: 1000;
+       text-indent: -1000em;
+       height: 350px;
+       width: auto;
+       display: block;
+       width: 100%;
+}
+
+.supplementvideos {
+       float: left;
+       width: 279px;
+       margin-left: 10px;
+       text-align: center;
+       position: relative;
+       padding: 10px 0 0 0;
+       margin-bottom: -4px;
+}
+
+.supplementvideos img {
+       width: 279px;
+}
+
+.videofeatured {
+       margin-bottom: 14px;
+       position: relative;
+}
+
+.thirds .videofeatured {
+       width: 305px;
+       float: left;
+       margin-left: 10px;
+}
+
+.videofeatured h3 {
+       text-align: left
+}
+
+.supplementvideos .videofeatured h3 a {
+       padding: 0 5px;
+       color: #21759b;
+}
+
+.supplementvideos .videofeatured img,
+.supplementvideos .videofeatured embed {
+       width: 135px;
+       height: auto;
+       float: left;
+}
+
+.thirds .videofeatured img {
+       width: 305px;
+       bottom: 5px;
+       top: auto;
+}
+
+/* this holds the video and allows it to hide parts of the video that overflow */
+.videofeaturedcontainer {
+       position: relative;
+       height: 165px;
+       overflow: hidden;
+       border-radius: 6px;
+       -webkit-border-radius: 6px;
+       -khtml-border-radius: 6px;
+       -moz-border-radius: 6px;
+}
+
+/* fake link overlay */
+.videofeaturedcontainer .arrow {
+       display: block;
+       z-index: 1000;
+       position: absolute;
+       height: 169px;
+       width: 284px;
+       text-indent: -1000em;
+}
+
+.thirds .videofeaturedcontainer .arrow {
+       width: 305px;
+}
+
+/* add this css class if you want to show the arrow */
+.showarrow {
+       background: url(./i/arrow.png) no-repeat center center;
+}
+
+.thevideo .ui-tabs a:hover span {
+       background-color: none !important;
+}
+
+.thevideo .showarrow {
+       display: block;
+       z-index: 1000;
+       position: absolute;
+       height: 50px;
+       width: 100%;
+       top: 50%;
+       margin-top: -50px;
+       text-indent: -1000em;
+}
+
+.thevideotabs {
+       float: left;
+       width: 279px;
+       margin-left: 10px;
+       color: #ccc;
+       margin-top: 10px;
+       height: 100%;
+       overflow: auto;
+}
+
+.thevideotabs .sd-rating {
+       display: none;
+}
+
+div.sharedaddy.sd-rating-enabled .sd-like .post-likes-widget, div.sharedaddy.sd-sharing-enabled .sd-like .post-likes-widget {
+       width: 100% !important;
+}
+
+.thevideotabs h4 {
+       text-transform: uppercase;
+       letter-spacing: 0.2em;
+       font-size: 9px;
+       color: #ccc;
+}
+
+.thevideotabs p {
+       margin-bottom: 10px;
+       color: #bbb;
+}
+
+#related {
+       width: 284px;
+       float: right;
+       margin-top: 10px;
+}
+
+#related ul a {
+       width: 274px;
+}
+
+.listedthumbs ul {
+       margin-bottom: 15px;
+}
+
+.listedthumbs ul span {
+       float: right;
+       height: 40px;
+       width: 40px;
+       overflow: hidden;
+       margin-left: 4px;
+       border: 1px solid #ccc;
+}
+
+.listedthumbs ul li {
+       font-size: 13px;
+       letter-spacing: -0.04em;
+       clear: both;
+       min-height: 40px;
+       padding-bottom: 10px;
+       padding-top: 5px;
+       border-bottom: 1px solid #dfdfdf;
+       border-top: 1px solid #fff;
+       padding-left: 5px;
+}
+
+.listedthumbs ul li:last-child {
+       border-bottom: none;
+}
+
+.listedthumbs ul a, .listedthumbs ul a:link, .listedthumbs ul a:visited {
+       position: relative;
+       z-index: 1000;
+       display: block;
+       width: 228px;
+}
+
+.home .listedthumbs ul a {
+       width: 289px;
+}
+
+.listedthumbs ul span {
+       position: relative;
+}
+
+.listedthumbs ul span img {
+       height: 50px;
+}
+
+.listedthumbs ul span embed {
+       z-index: 999;
+       position: absolute;
+       top: -100px;
+       left: -100px;
+}
+
+.listedthumbs .list {
+       padding-top: 0;
+}
+
+.listedthumbs .list li:last-child {
+       border-bottom: none;
+}
+
+/* Tabs for related stuffs */
+/* Caution! Ensure accessibility in print and other media types... */
+@media projection, screen {
+       /* Use class for showing/hiding tab content, so that visibility can be better controlled in different media types... */
+       .ui-tabs-hide {
+               display: none !important;
+       }
+}
+
+/* Hide useless elements in print layouts... */
+@media print {
+       .ui-tabs {
+               display: none;
+       }
+}
+
+/* Skin */
+.ui-tabs, .ui-tabs-panel {
+       font-size: 12px;
+}
+
+.ui-tabs {
+       list-style: none;
+       margin: 0;
+       padding: 0 0 0 3px;
+}
+
+.ui-tabs:after {
+       /* clearing without presentational markup, IE gets extra treatment */
+       display: block;
+       clear: both;
+       content: " ";
+}
+
+.ui-tabs li {
+       float: left;
+       margin: 0 0 0 2px;
+}
+
+.ui-tabs a, .ui-tabs a span {
+       float: left; /* fixes dir=ltr problem and other quirks IE */
+       padding: 0;
+}
+
+.ui-tabs a {
+       text-decoration: none;
+       white-space: nowrap; /* @ IE 6 */
+       outline: 0; /* @ Firefox, prevent dotted border after click */
+}
+
+.ui-tabs a:link, .ui-tabs a:visited {
+       color: #555;
+}
+
+.ui-tabs .ui-tabs-selected a {
+       position: relative;
+       top: 0px;
+       z-index: 2;
+       margin-top: 0;
+       color: #31ade5;
+}
+
+.ui-tabs a span {
+       /*border-radius-topright: .4em;
+       -webkit-border-radius-topright: .4em;
+       -moz-border-radius-topright: .4em;
+       border-radius-topleft: .4em;
+       -webkit-border-radius-topleft: .4em;
+       -moz-border-radius-topleft: .4em;
+       background: #444;*/
+       padding: 2px 5px;
+
+       text-transform: uppercase;
+       letter-spacing: 0.2em;
+       font-size: 9px;
+}
+
+.ui-tabs a:hover span {
+
+}
+
+.ui-tabs .ui-tabs-selected a span {
+       /*background: #333; */
+       cursor: pointer;
+}
+
+.ui-tabs .ui-tabs-selected a:link, .ui-tabs .ui-tabs-selected a:visited,
+.ui-tabs .ui-tabs-disabled a:link, .ui-tabs .ui-tabs-disabled a:visited {
+       /* @ Opera, use pseudo classes otherwise it confuses cursor... */
+       cursor: text;
+}
+
+.ui-tabs a:hover, .ui-tabs a:focus, .ui-tabs a:active,
+.ui-tabs .ui-tabs-unselect a:hover, .ui-tabs .ui-tabs-unselect a:focus, .ui-tabs .ui-tabs-unselect a:active {
+       /* @ Opera, we need to be explicit again here now... */
+       cursor: pointer;
+}
+
+.ui-tabs a:hover {
+       color: #d54e21;
+       cursor: pointer;
+}
+
+.ui-tabs-disabled {
+       opacity: .4;
+}
+
+.ui-tabs .ui-tabs-disabled a:link, .ui-tabs .ui-tabs-disabled a:visited {
+       color: #000;
+}
+
+.ui-tabs-panel {
+       padding: 10px;
+}
+
+/*.ui-tabs-loading em {
+    padding: 0 0 0 20px;
+    background: url(loading.gif) no-repeat 0 50%;
+}*/
+
+/* Additional IE specific bug fixes... */
+* html .ui-tabs {
+       /* auto clear @ IE 6 & IE 7 Quirks Mode */
+       display: inline-block;
+}
+
+*:first-child + html .ui-tabs {
+       /* auto clear @ IE 7 Standards Mode - do not group selectors, otherwise IE 6 will ignore complete rule (because of the unknown + combinator)... */
+       display: inline-block;
+}
+
+/* Wrap for main content */
+#wrap {
+       width: 937px;
+       margin: 0 auto 30px auto;
+}
+
+.searchwrap,
+.searchwordcamptv {
+       margin-bottom: 0em;
+}
+
+.languagewrap {
+       padding: 5px 10px;
+       margin-bottom: 2em;
+       border-radius: .4em;
+       -webkit-border-radius: .4em;
+       -moz-border-radius: .4em;
+       border: 1px solid #DFDFDF;
+       height: 2em;
+       position: relative;
+       background: #e8e8e8;
+}
+
+.searchwrap {
+       margin-top: 10px;
+       height: 2em;
+       margin-bottom: -2em;
+       position: relative;
+}
+
+.searchwrap form {
+       margin-bottom: -2em;
+}
+
+.searchwordcamptv form #wordcampsubmit,
+#setlanguage input {
+       background: #ccc;
+       border: 1px solid #888;
+       color: #666;
+       -moz-border-radius-bottomleft: 3px;
+       -moz-border-radius-bottomright: 3px;
+       -moz-border-radius-topleft: 3px;
+       -moz-border-radius-topright: 3px;
+       -webkit-border-radius: 3px;
+       cursor: pointer;
+       font-size: 10px;
+       height: 20px;
+       padding: 0 4px;
+}
+
+.searchwordcamptv form #wordcampsubmit:hover {
+       background: #B3B3B3;
+       color: #f7f7f7;
+}
+
+.searchwordcamptv #setlanguage {
+       margin-top: -20px;
+}
+
+#setlanguage select,
+.searchwordcamptv form select {
+       margin-right: 15px;
+}
+
+.image a {
+       background: url(./i/arrow.png) no-repeat 50% 50%;
+}
+
+#setlanguage {
+       float: right;
+       height: 2em;
+}
+
+.searchwordcamptv #setlanguage {
+       bottom: 10px;
+       top: auto;
+}
+
+#setlanguage input, #setlanguage select, #setlanguage p {
+       display: block;
+       float: left;
+}
+
+/* list for below content */
+
+/* this holds .linklist divs that have uls */
+.linklists {
+       width: 769px;
+       margin-left: -20px;
+}
+
+.secondcolumn {
+       margin-left: 20px;
+       float: left;
+       width: 739px;
+}
+
+.submenu {
+       width: 177px;
+       float: left;
+}
+
+.submenu .selected {
+       background: #f7f7f7;
+}
+
+.submenu ul {
+       margin-bottom: 20px;
+       border-top: 1px solid #ddd;
+       border-bottom: 1px solid #f5f5f5;
+}
+
+.submenu ul li a {
+       display: block;
+       height: 25px;
+       padding: 0 5px;
+       line-height: 25px;
+       border-bottom: 1px solid #ddd;
+       border-top: 1px solid #f5f5f5;
+
+}
+
+.home .linklists, .full {
+       float: none;
+       width: 967px;
+       margin-left: -20px;
+}
+
+/* to wrap around each list */
+.linklist {
+       width: 33%;
+       float: left;
+}
+
+.linklist ul {
+       border-top: 1px solid #ddd;
+       padding-top: 5px;
+}
+
+.linklist li {
+       font-size: 14px;
+       padding-bottom: 15px;
+       padding-left: 5px;
+       letter-spacing: -0.04em;
+}
+
+.linklist h3, .linklists h3 {
+       font-family: Georgia, Times, "Times New Roman", serif;
+       font-size: 20px;
+       line-height: 36px;
+       height: 36px;
+       padding-left: 5px;
+}
+
+.linklists h3 {
+       clear: both;
+       margin-left: 20px;
+}
+
+.linklist h3 {
+       margin-left: 0;
+}
+
+.linklist h3 a, .linklist h3 a:link, .linklist h3 a:visited {
+       color: #444;
+}
+
+.linklist h3 a:hover, .linklist h3 a:active {
+       color: #d54e21;
+}
+
+.linklist .more {
+       float: right;
+       line-height: 22px;
+       height: 22px;
+       font-size: 9px;
+}
+
+.linklist .more, .linklist .more:link, .linklist .more:visited {
+       color: #333;
+}
+
+.linklist .more:hover, .linklist .more:active {
+       color: #d54e21;
+}
+
+.linklist .sleeve {
+       margin-left: 20px;
+}
+
+.secondary_content {
+       width: 971px;
+       margin-bottom: 30px;
+       margin-left: -7px;
+}
+
+.secondary_content ul {
+       list-style: none;
+       border-top: 1px solid #ddd;
+}
+
+.secondary_content li {
+       padding: 5px;
+       list-style: none;
+       border-bottom: 1px solid #dfdfdf;
+       border-top: 1px solid #fff;
+}
+
+.secondary_content li:last-child {
+       border-bottom: none;
+}
+
+.secondary_content div.half {
+       width: 460px;
+       float: left;
+       padding: 15px 7px;
+}
+
+.miro {
+       text-align: right;
+       margin-bottom: -46px;
+}
+
+.secondary_content h3 {
+       font-family: Georgia, Times, "Times New Roman", serif;
+       font-size: 20px;
+       line-height: 36px;
+       padding-left: 5px;
+}
+
+#wpstats {
+       display: none;
+}
+
+#content {
+       width: 630px;
+       float: left;
+}
+
+#content .post {
+       margin-bottom: 20px;
+       clear: both;
+}
+
+#comments {
+       margin-top: 10px;
+}
+
+#comments .depth-2 {
+       margin-left: 20px;
+}
+
+#comments .depth-3 {
+       margin-left: 40px;
+}
+
+#comments a, #comments a:link, #comments a:visited {
+       color: #222;
+}
+
+#comments a:hover, #comments a:active {
+       color: #d54e21;
+}
+
+#comments .commenttext a, #comments .commenttext a:link, #comments .commenttext a:visited {
+       color: #21759b;;
+}
+
+#comments a:hover, #comments a:active {
+       color: #d54e21;
+}
+
+#respond {
+       border-top: 1px solid #dfdfdf !important;
+       margin-top: 0 !important;
+}
+
+#respond:first-child {
+       border-top: none !important;
+       padding-top: 0 !important;
+}
+
+#respond h3 {
+       border: none;
+       margin-top: 0 !important;
+}
+
+.children {
+       margin-left: 10px;
+}
+
+.children #respond {
+       margin-top: 10px;
+}
+
+.children #respond textarea {
+       width: 90%;
+}
+
+#commentform {
+       color: #222;
+       margin-bottom: 15px;
+       background: transparent !important;
+}
+
+#commentform, #commentform input, #commentform textarea {
+       font-family: "Lucida Grande", "Lucida Sans Unicode", sans-serif;
+}
+
+#commentform textarea, #commentform input[type="text"] {
+       background: white;
+       border: 1px solid #ccc;
+       padding: 4px 6px;
+       margin-right: 3px;
+       -webkit-box-shadow: inset 1px 1px 1px rgba(0, 0, 0, 0.1);
+       -moz-box-shadow: inset 1px 1px 1px rgba(0, 0, 0, 0.1);
+       box-shadow: inset 1px 1px 1px rgba(0, 0, 0, 0.1);
+       border-radius: 2px;
+}
+
+#commentform textarea {
+       width: 600px;
+       height: 100px;
+       margin-bottom: 5px;
+}
+
+#commentform #submit {
+       margin-bottom: 10px;
+}
+
+#commentform p {
+       font-size: 10px;
+       margin-bottom: 5px;
+}
+
+.commentlist li {
+       list-style: none;
+       padding: 10px 2px;
+       border-top: 1px solid #dfdfdf;
+}
+
+.commentlist li small {
+       float: right;
+       font-size: 11px;
+       margin-top: -23px;
+}
+
+.commentlist li {
+       clear: both;
+}
+
+.commentlist li .authorinfo {
+       font-weight: bold;
+       font-style: normal;
+       line-height: 1.8em;
+}
+
+.commentmetadata {
+       line-height: 1.8em;
+}
+
+.avatar {
+       float: left;
+       margin: 0 10px 5px 0;
+       border-radius: 2px;
+       -webkit-box-shadow: 1px 1px 1px rgba(0, 0, 0, 0.1);
+       -moz-box-shadow: 1px 1px 1px rgba(0, 0, 0, 0.1);
+       box-shadow: 1px 1px 1px rgba(0, 0, 0, 0.1);
+}
+
+.commenttext {
+       float: left;
+       padding-top: 5px;
+       clear: both;
+       width: 100%;
+}
+
+.commenttext p {
+       margin-bottom: 1em;
+}
+
+.comment .pd-rating {
+       float: right;
+       font-size: 10px;
+}
+
+#footer {
+       clear: both;
+       height: 3.5em;
+       margin-bottom: 15px;
+       color: #888;
+}
+
+#footer .automattic {
+       width: 400px;
+       float: right;
+       text-align: right;
+       font-size: 11px;
+       letter-spacing: 0.2em;
+       line-height: 3em;
+       padding-top: 13px;
+       padding-right: 2px;
+       text-transform: uppercase;
+       line-height: 28px;
+}
+
+.menu-footer-container {
+       float: left;
+       line-height: 4em;
+       margin-left: 2px;
+       font-size: 13px;
+       margin-bottom: 0;
+}
+
+.menu-footer-container li {
+       display: inline-block;
+}
+
+.menu-footer-container li:last-of-type .dot {
+       display: none;
+}
+
+.menu-footer-container a {
+       color: #888;
+}
+
+.menu-footer-container a:hover {
+       color: #21759b;
+}
+
+#footer .automattic img {
+       margin: 0 3px 1px 0;
+       opacity: 1;
+       transition: opacity 0.15s ease-in-out;
+}
+
+#footer .automattic img:hover {
+       opacity: 0.8;
+}
+
+#footer img.videopress {
+       display: inline;
+}
+
+#sidebar h2 {
+       margin: 5px 0 0;
+       padding: 0;
+       font-weight: bold;
+}
+
+#sidebar ul, #sidebar ul ol {
+       margin: 0;
+       padding: 0;
+}
+
+#sidebar ul li {
+       list-style-type: none;
+       list-style-image: none;
+       margin-bottom: 15px;
+}
+
+#sidebar ul p, #sidebar ul select {
+       margin: 5px 0 8px;
+}
+
+#sidebar ul ul, #sidebar ul ol {
+       margin: 5px 0 0 10px;
+}
+
+#sidebar ul ul ul, #sidebar ul ol {
+       margin: 0 0 0 10px;
+}
+
+ol li, #sidebar ul ol li {
+       list-style: decimal outside;
+}
+
+#sidebar ul ul li, #sidebar ul ol li {
+       margin: 3px 0 0;
+       padding: 0;
+}
+
+/* Begin Calendar */
+#sidebar #calendar h2 {
+       display: none;
+}
+
+#wp-calendar {
+       empty-cells: show;
+       margin: 10px auto;
+       width: 100%;
+}
+
+#wp-calendar table {
+       padding-right: 10px;
+}
+
+#wp-calendar #next a {
+       padding-right: 10px;
+       text-align: right;
+}
+
+#wp-calendar #prev a {
+       padding-left: 10px;
+       text-align: left;
+}
+
+#wp-calendar a {
+       display: block;
+}
+
+#wp-calendar caption {
+       text-align: center;
+       width: 100%;
+}
+
+#wp-calendar td {
+       padding: 3px 0;
+       text-align: right;
+}
+
+#wp-calendar td.pad:hover {
+       /* Doesn't work in IE */
+       background-color: #fff;
+}
+
+#wp-calendar #prev a, #wp-calendar #next a {
+       font-size: 9pt;
+}
+
+#wp-calendar a {
+       text-decoration: none;
+}
+
+#wp-calendar caption {
+       font: bold 1em/20px "Lucida Grande", "Lucida Sans Unicode", sans-serif;
+       text-align: center;
+       border-bottom: 1px solid #ddd;
+}
+
+#wp-calendar td, #wp-calendar th {
+       border-bottom: 1px solid #ddd;
+
+}
+
+#wp-calendar th {
+       font-style: normal;
+       text-transform: capitalize;
+       text-align: right;
+}
+
+/* End Calendar */
+
+.fourOHfour {
+       text-align: center;
+}
+
+.fourOHfour h2 {
+       margin-top: 20px;
+       margin-bottom: 20px;
+       font-size: 3em;
+       font-family: Georgia, serif;
+}
+
+.fourOHfour p {
+       font-size: 1.5em;
+       margin-bottom: 1em;
+}
+
+.pd-rating {
+       text-align: left;
+       padding: 2px 0 0;
+       float: left;
+}
+
+#about .pd-rating {
+       display: none;
+}
+
+/*
+=============================================================
+
+WordPress.tv Refresh
+
+=============================================================
+*/
+
+/* Globals
+============================================================= */
+
+a {
+       outline: none
+}
+
+.container {
+       width: 940px;
+       margin: auto;
+}
+
+.primary-content {
+       float: left;
+       width: 700px;
+       margin: 0;
+}
+
+.secondary-content {
+       float: right;
+       width: 170px;
+       margin: 0 0 50px 0;
+}
+
+.miro {
+       background: url('i/miro.png') no-repeat;
+
+       display: block;
+
+       width: 160px;
+       height: 46px;
+       margin: -40px 0 0 6px;
+
+       text-align: left;
+       text-indent: -9999px;
+}
+
+.tag-count {
+       border-radius: 20px;
+       background: #dedede;
+
+       font-size: 11px;
+       font-weight: bold;
+
+       padding: 1px 5px 0px 5px;
+       margin: 0 0 0 2px;
+}
+
+.pagination {
+       border-top: 1px #EEE solid;
+       clear: both;
+       padding: 10px 0;
+       margin: 0 0 50px 0;
+}
+
+.pagination div {
+       width: 40%
+}
+
+.nav-next {
+       float: right;
+       text-align: right;
+}
+
+.nav-previous {
+       float: left;
+}
+
+.primary-content #searchform {
+       float: none;
+       margin: 10px 0;
+}
+
+.primary-content #searchform #searchsubmit {
+       margin: 0
+}
+
+.primary-content #searchform input {
+       margin: 0
+}
+
+/* IE fixes
+============================================================= */
+
+.ie7 .view-more {
+       position: relative;
+       bottom: 42px;
+}
+
+.ie7 .secondary-videos {
+       clear: right;
+       margin: 3px 0;
+}
+
+.ie7 .secondary-content .video-list li {
+       min-height: 0;
+}
+
+/* Typography
+============================================================= */
+
+/* Menu */
+
+#menu {
+       margin-right: 5px;
+}
+
+#menu li {
+       font-size: 14px;
+}
+
+#menu li a,
+#menu li a:link,
+#menu li a:visited {
+       color: #21759b;
+}
+
+#menu li a.selected {
+       color: #545454;
+}
+
+#menu li a:hover {
+       color: #d54e21 !important;
+}
+
+#menu #searchform {
+       margin: 0 0 0 15px;
+}
+
+/* Titles and Body Text */
+
+body, td, p,
+.wpl-count,
+.desc,
+.automattic {
+       font-family: "ff-meta-web-pro", Helvetica Neue, Helvetica, sans-serif;
+       font-size: 13px;
+       line-height: 1.4;
+}
+
+.wpl-count {
+       line-height: 1.7;
+}
+
+.wptv-hero .page-title {
+       margin: -8px auto 10px auto;
+}
+
+.page-title {
+       width: 940px;
+       margin: auto;
+}
+
+.video-title {
+       font-size: 13px;
+       font-weight: bold;
+       -webkit-font-smoothing: antialiased;
+}
+
+h2 {
+       font-family: "ff-meta-web-pro", Helvetica Neue, Helvetica, sans-serif;
+       font-size: 28px;
+       font-weight: bold;
+}
+
+h3 {
+       font-family: "ff-meta-web-pro", Helvetica Neue, Helvetica, sans-serif;
+       border-bottom: 1px #e9e9e9 solid;
+
+       clear: both;
+
+       font-size: 18px;
+       font-weight: bold;
+
+       margin: 20px 0 20px;
+       padding: 0 0 9px;
+}
+
+.home .secondary-content h3 {
+       margin-top: 0;
+}
+
+h4 {
+       font-family: "ff-meta-web-pro", Helvetica Neue, Helvetica, sans-serif;
+       font-size: 16px;
+       font-weight: bold;
+
+       margin: 20px 0 10px;
+}
+
+h5 {
+       font-size: 12px;
+       font-weight: bold;
+       text-transform: uppercase;
+
+       margin: 10px 0 2px 0;
+}
+
+.view-more {
+       font-size: 13px;
+
+       display: block;
+       float: right;
+       margin: 5px 0 0 0;
+}
+
+.breadcrumb {
+       color: #8B8B8B;
+
+       font-size: 13px;
+       text-transform: uppercase;
+
+       margin: 0 0 10px 0;
+}
+
+.breadcrumb a {
+       color: #8B8B8B;
+}
+
+.breadcrumb a:hover {
+       color: #464646;
+}
+
+.breadcrumb .arrow {
+       font-family: Arial, Helvetica, sans-serif;
+       font-size: 12px;
+
+       margin: 0 5px;
+
+       position: relative;
+       top: -1px;
+}
+
+.breadcrumb .tag-count {
+       display: none;
+}
+
+/* Menu
+============================================================= */
+
+#menu li {
+       position: relative;
+}
+
+/* Dropdowns */
+
+#menu .sub-menu {
+       background: rgba(47, 47, 47, .95);
+
+       border-radius: 3px;
+       -moz-border-radius: 3px;
+       -webkit-border-radius: 3px;
+
+       box-shadow: 0 2px 3px rgba(0, 0, 0, 0.2);
+
+       display: none;
+       z-index: 99;
+
+       position: absolute;
+       top: 50px;
+       left: -5px;
+
+       height: auto;
+       width: 200px;
+}
+
+#menu .sub-menu li {
+       border-top: 1px rgba(255, 255, 255, 0.1) solid;
+       border-bottom: 1px rgba(0, 0, 0, 0.2) solid;
+       float: none;
+       margin: 0;
+}
+
+#menu .sub-menu li a {
+       color: #ccc;
+       text-shadow: 0 1px 0 rgba(0, 0, 0, 0.6);
+       -moz-text-shadow: 0 1px 0 rgba(0, 0, 0, 0.6);
+       -webkit-text-shadow: 0 1px 0 rgba(0, 0, 0, 0.6);
+
+       font-size: 13px;
+       font-weight: normal;
+       line-height: 1.2;
+
+       padding: 10px;
+
+       display: block;
+       clear: both;
+}
+
+#menu .sub-menu li a:hover {
+       background: #1f1f1f;
+       color: #fff !important;
+}
+
+#menu .sub-menu .current-menu-item a,
+#menu .sub-menu .current_page_item a {
+       color: #ccc !important;
+}
+
+#menu .sub-menu ul {
+       left: 195px;
+       top: 5px;
+}
+
+/* Hero Area
+============================================================= */
+
+.wptv-hero {
+       clear: both;
+
+       margin: 10px auto 30px auto;
+       padding: 30px 0 10px 0;
+
+       background: #F0F0F0;
+}
+
+.wptv-hero .main-video {
+       background: #2f2f2f;
+       clear: both;
+
+       float: left;
+       width: 575px;
+}
+
+.wptv-hero .main-video .video-player {
+       width: 100% !important;
+       height: 323px !important;
+       margin: 0 !important;
+}
+
+.wptv-hero .main-video .video-player .videopress-placeholder {
+       margin: 0;
+       width: 100% !important;
+       height: 100% !important;
+}
+
+.wptv-hero .main-video .video-player .videopress-poster,
+.wptv-hero .main-video .video-player object {
+       width: 100% !important;
+       height: 100% !important;
+}
+
+.wptv-hero .main-video .video-player .videopress-title,
+.wptv-hero .main-video .video-player .videopress-watemark {
+       display: none !important;
+}
+
+.wptv-hero .main-video h3 {
+       border-bottom: 0;
+       border-top: 6px #464646 solid;
+
+       text-align: left;
+
+       margin: 0;
+       padding: 15px;
+}
+
+.wptv-hero .main-video .video-title {
+       display: block;
+       color: #eee;
+       font-size: 18px;
+}
+
+.wptv-hero .main-video .video-event {
+       display: block;
+       margin-top: 25px;
+       text-transform: capitalize;
+}
+
+.wptv-hero .main-video .video-event a {
+       color: #8e8e8e;
+       font-size: 14px;
+       font-weight: normal;
+}
+
+.wptv-hero .main-video .video-event a:hover {
+       color: #fff;
+}
+
+.wptv-hero .main-video .video-event .tag-count {
+       display: none;
+}
+
+.wptv-hero .secondary-videos {
+       float: right;
+       width: 345px;
+}
+
+.wptv-hero .secondary-videos h3 {
+       font-size: 18px;
+       font-weight: bold;
+       border-bottom: 1px #dfdfdf solid;
+
+       padding: 0 0 14px 0;
+       margin: 0 0 18px 0;
+}
+
+.wptv-hero .secondary-videos li {
+       font-size: 13px;
+
+       min-height: 75px;
+       position: relative;
+
+       margin: 0 auto 23px 0;
+       padding: 0 0 0 142px;
+}
+
+.wptv-hero .secondary-videos img {
+       width: 130px;
+       height: 75px;
+
+       position: absolute;
+       left: 0;
+}
+
+.wptv-hero .secondary-videos a:hover img {
+       opacity: 0.8;
+}
+
+/* Video lists
+============================================================= */
+
+.video-list {
+       clear: both;
+}
+
+.video-list li {
+       float: left;
+       min-height: 220px;
+       margin-bottom: 20px;
+}
+
+.video-list li img {
+       width: 100%;
+       min-height: 100px;
+}
+
+.video-list li .video-thumbnail {
+       display: block;
+       width: 100%;
+       height: 100px;
+
+       margin: 0 0 8px 0;
+
+       overflow: hidden;
+       position: relative;
+}
+
+.video-list.four-col {
+       width: 860px;
+}
+
+.video-list.four-col li {
+       width: 160px;
+       margin-right: 20px;
+}
+
+.secondary-content .video-list .video-title {
+       font-size: 13px;
+       display: block;
+       overflow: hidden;
+       text-overflow: ellipsis;
+       width: 170px;
+}
+
+.secondary-content .video-list li {
+       min-height: inherit;
+       border: 0;
+}
+
+/* Archives
+============================================================= */
+
+.archive.video-list {
+       width: auto;
+       margin: 16px 0 0 0;
+}
+
+.archive .video-description span {
+       display: block;
+}
+
+.archive.video-list li {
+       margin: 0 0 40px 0;
+       min-height: 120px;
+
+       display: block;
+       float: none;
+       position: relative;
+}
+
+.archive.video-list .video-thumbnail {
+       position: absolute;
+       top: 0;
+       left: 0;
+
+       width: 220px;
+       height: 120px;
+
+       margin: 0 20px 0 0;
+}
+
+.archive.video-list .video-title {
+       font-size: 16px;
+       margin: 4px 0 8px;
+}
+
+.archive.video-list .video-description {
+       display: block;
+       padding-left: 240px;
+}
+
+.archive.video-list .video-date {
+       color: #aaa;
+       display: block;
+
+       margin: 10px 0 0 0;
+
+       font-size: 12px;
+}
+
+.archive.video-list .video-speakers {
+       margin: 7px 0 0 0;
+}
+
+.archive.video-list .video-excerpt {
+       margin: 7px 0 0 0;
+}
+
+/* Search */
+
+.search h4 {
+       margin: 0 0 10px 0;
+}
+
+.archive .video-events {
+       text-transform: uppercase;
+       font-size: 12px;
+       margin: 0 0 5px 0;
+}
+
+/* Category page
+============================================================= */
+
+.category.archive .video-list .video-title {
+       font-size: 13px;
+       line-height: 16px;
+}
+
+/* Individual Video Page
+============================================================= */
+
+.single .video-title {
+       font-size: 24px;
+}
+
+body:not(.single) .video-info {
+       width: 220px;
+       margin: 15px 0 0 0;
+       float: right;
+}
+
+.video-info p {
+       /*text-transform: capitalize;*/
+       margin: 0 0 12px 0;
+}
+
+/* Video Player and Placeholder */
+
+.single .video-player {
+       float: left;
+       width: 940px !important;
+       height: 529px !important;
+
+       overflow: hidden;
+}
+
+.videopress-placeholder,
+.video-player object {
+       width: 100% !important;
+       height: 100% !important;
+       margin: 0 !important;
+}
+
+.videopress-poster {
+       width: 100%;
+       height: auto;
+}
+
+.videopress-title {
+       display: none !important;
+}
+
+/* Sharedaddy, Likes, etc */
+
+#page .the-video div.jp-relatedposts {
+       clear: both;
+}
+
+#page div.sharedaddy div.sd-block {
+       border: 0;
+}
+
+div.sharedaddy .sd-content {
+       width: auto !important;
+       margin: 0 -5px 0 0 !important;
+}
+
+/* Sharing */
+
+#page .the-video .sharedaddy .sd-sharing-enabled {
+       clear: none;
+       float: right;
+}
+
+/* Ratings */
+
+.video-info .sd-block {
+       display: none !important;
+}
+
+div.sharedaddy div.sd-block.sd-rating {
+       float: left;
+       margin: 0;
+}
+
+div.sharedaddy .sd-rating .sd-content {
+       float: left;
+}
+
+div.sharedaddy .sd-title {
+       display: none !important;
+}
+
+.the-video div.sharedaddy .sd-rating .pd-rating {
+       width: 100%;
+}
+
+/* Likes */
+
+.wpl-likebox {
+       clear: both;
+       margin: 0 0 0 2px;
+}
+
+div.sharedaddy ul.wpl-avatars {
+       margin: 0 0 0 2px;
+}
+
+#page div.sharedaddy.sd-sharing-enabled .sd-like div.sd-content {
+       width: 100% !important;
+       margin: 0 !important;
+}
+
+#page div.sharedaddy ul.wpl-avatars li {
+       width: 15px;
+       height: 15px;
+}
+
+#page div.sharedaddy ul.wpl-avatars li img {
+       width: 100%;
+       height: 100%;
+}
+
+/* Related Posts */
+div#jp-relatedposts div.jp-relatedposts-items-visual {
+       margin-right: -9px;
+}
+
+div#jp-relatedposts div.jp-relatedposts-items-visual .jp-relatedposts-post:last-of-type {
+       padding: 0;
+}
+
+/* Comments */
+
+h3#comments {
+       border: 0;
+       margin: 20px 0 0 0;
+}
+
+/* WordCamp Category Page
+============================================================= */
+
+.category .secondary-videos li {
+       margin: 0 auto 13px 0
+}
+
+.secondary-videos .tag-count {
+       display: none;
+}
+
+.secondary-videos .video-event {
+       display: block;
+       margin: 5px 0 0 0;
+
+       font-size: 12px;
+       font-weight: normal;
+       text-transform: capitalize;
+}
+
+.secondary-videos .video-event,
+.secondary-videos .video-event a {
+       color: #818181;
+}
+
+.category .page-title {
+       float: left;
+       width: auto;
+       margin: -8px 0 20px 0;
+}
+
+.desc {
+       float: right;
+       color: #969696;
+       margin: 3px 0 20px 0;
+}
+
+.category-wordcamptv .secondary-content {
+       float: left;
+       width: 170px;
+}
+
+.category-wordcamptv .primary-content {
+       float: right;
+       margin: 0;
+}
+
+/* WordCamp Individual Page
+============================================================= */
+
+.tax-event .secondary-videos li {
+       margin: 0 auto 13px 0
+}
+
+/* Secondary Content
+============================================================= */
+
+.secondary-content ul {
+       margin: 0 0 40px 0;
+}
+
+.secondary-content li li {
+       border-bottom: 1px #e5e5e5 solid;
+       padding: 5px 0;
+}
+
+.secondary-content .widget-title,
+.secondary-content .widgettitle {
+       border-bottom: 1px #E9E9E9 solid;
+       clear: both;
+       font-size: 18px;
+       font-weight: bold;
+       margin: 20px 0 20px;
+       padding: 0 0 9px;
+}
+
+.secondary-content li.widget {
+       border: 0;
+}
+
+/* 404 page
+============================================================= */
+
+.error404 .primary-content {
+       width: 940px;
+}
+
+.error404 h2 {
+       margin: 0 0 30px 0;
+}
+
+.baron-von-pick {
+       float: left;
+       margin: 0 50px 20px 0;
+       font-size: 12px;
+       color: #888;
+}
+
+.baron-von-pick img {
+       border-radius: 3px;
+       -webkit-border-radius: 3px;
+       width: 200px;
+       margin-bottom: 10px;
+}
+
+.error404 .primary-content .message-404 p {
+       font-size: 16px;
+       margin: 0 0 20px 0;
+}
+
+.message-404 {
+       float: left;
+       width: 680px;
+}
+
+/* Footer
+============================================================= */
+
+#footer {
+       background: #F0F0F0;
+
+       margin: 10px 0 0 0;
+       padding: 10px 0;
+}
+
+#footer .dot {
+       margin: 0 10px;
+}
+
+#footer .automattic a {
+       position: relative;
+       top: 2px;
+       margin: 0 7px;
+}
</ins></span></pre></div>
<a id="sitestrunkwordpresstvpublic_htmlwpcontentthemeswptv2taxonomyeventphp"></a>
<div class="addfile"><h4 style="background-color: #eee; color: inherit; margin: 1em 0; padding: 1.3em; font-size: 115%">Added: sites/trunk/wordpress.tv/public_html/wp-content/themes/wptv2/taxonomy-event.php</h4>
<pre class="diff"><span>
<span class="info" style="display: block; padding: 0 10px; color: #888">--- sites/trunk/wordpress.tv/public_html/wp-content/themes/wptv2/taxonomy-event.php                           (rev 0)
+++ sites/trunk/wordpress.tv/public_html/wp-content/themes/wptv2/taxonomy-event.php     2014-12-03 20:10:33 UTC (rev 1024)
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -0,0 +1,90 @@
</span><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+<?php
+/*
+ * Event Taxonomy Archives
+ *
+ * Displays for event listings like individual WordCamps.
+ *
+ * @todo cleanup and merge with category.php
+ */
+global $wp_query, $wptv;
+get_header();
+
+// If you're wondering why the below if statement, see category.php
+
+if ( get_query_var( 'paged' ) < 2 && $wp_query->found_posts > 6 ) : ?>
+<div class="wptv-hero group">
+       <div class="container">
+
+               <?php get_template_part( 'breadcrumbs' ); ?>
+               <h2 class="page-title"><?php single_term_title(); ?></h2>
+
+               <?php if ( have_posts() ) : the_post(); ?>
+
+                       <div class="main-video">
+                               <?php $wptv->the_video(); ?>
+                               <h3>
+                                       <a href="<?php the_permalink(); ?>" rel="bookmark" class="video-title"><?php the_title(); ?></a>
+                                       <?php $wptv->the_event( '<strong class="video-event">', '</strong>' ); ?>
+                               </h3>
+                       </div><!-- .main-video -->
+
+               <?php endif; ?>
+
+                       <div class="secondary-videos">
+                       <ul>
+                               <?php
+                                       for ( $i = 0 ; $i < 5 ; $i++ ) :
+                                               if ( ! have_posts() ) {
+                                                       break; // just in case
+                                               }
+
+                                               the_post();
+                               ?>
+
+                               <li class="group">
+                                       <a href="<?php the_permalink(); ?>" rel="bookmark">
+                                               <span class="video-thumbnail">
+                                                       <img src="<?php $wptv->the_video( true, true ); ?>" />
+                                               </span>
+                                               <span class="video-title"><?php the_title(); ?></span>
+                                       </a>
+                               </li>
+
+                               <?php endfor; ?>
+                       </ul>
+               </div><!-- .secondary-videos -->
+       </div>
+</div><!-- .wptv-hero -->
+
+<?php else : // get_query_var(paged) < 2 ?>
+
+<div class="wptv-hero group">
+       <div class="container">
+               <?php get_template_part( 'breadcrumbs' ); ?>
+               <h2 class="page-title"><?php single_term_title(); ?></h2>
+       </div>
+</div>
+
+<?php endif; // paged ?>
+
+<div class="container">
+       <div class="primary-content">
+
+               <ul class="video-list four-col">
+                       <?php while ( have_posts() ) : the_post(); ?>
+                               <li>
+                                       <a href="<?php the_permalink(); ?>">
+                                               <span class="video-thumbnail"><?php $wptv->the_video_image(50, null, false); ?></span>
+                                               <span class="video-title"><?php the_title(); ?></span>
+                                       </a>
+                               </li>
+                       <?php endwhile; ?>
+               </ul>
+
+               <?php get_template_part( 'pagination' ); ?>
+
+       </div><!-- .primary-content -->
+       <?php get_sidebar( 'event' ); ?>
+</div><!-- .container -->
+<?php
+get_footer();
</ins></span></pre></div>
<a id="sitestrunkwordpresstvpublic_htmlwpcontentthemeswptv2uploadsubtitlestemplatephp"></a>
<div class="addfile"><h4 style="background-color: #eee; color: inherit; margin: 1em 0; padding: 1.3em; font-size: 115%">Added: sites/trunk/wordpress.tv/public_html/wp-content/themes/wptv2/upload-subtitles-template.php</h4>
<pre class="diff"><span>
<span class="info" style="display: block; padding: 0 10px; color: #888">--- sites/trunk/wordpress.tv/public_html/wp-content/themes/wptv2/upload-subtitles-template.php                                (rev 0)
+++ sites/trunk/wordpress.tv/public_html/wp-content/themes/wptv2/upload-subtitles-template.php  2014-12-03 20:10:33 UTC (rev 1024)
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -0,0 +1,331 @@
</span><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+<?php
+/**
+ * Template Name: Upload Subtitles
+ */
+
+function subtitles_upload_css() {
+       ?>
+       <style type="text/css">
+       <?php // theme structural css ?>
+       html,
+       body {
+               width: 100%;
+               height: 100%;
+               margin: 0;
+       }
+
+       #page {
+               height: auto;
+               min-height: 100%;
+               position: relative;
+               width: 100%;
+       }
+
+       #header {
+               margin: 0;
+               padding-top: 10px;
+       }
+
+       #footer {
+               position: absolute;
+               bottom: 0;
+               right: 0;
+               left: 0;
+       }
+
+       .video-upload {
+
+       }
+
+       .noscript-show p {
+               margin: 0 !important;
+       }
+       <?php // theme structural end ?>
+
+       .container {
+               overflow: hidden;
+       }
+
+       .video-upload h3 {
+               font-size: 22px;
+       }
+
+       .video-upload div.error,
+       .video-upload div.success {
+               border: 1px solid #c00;
+               border-radius: 3px;
+               background-color: #ffebe8;
+               padding: 0 10px;
+               margin: 10px 0;
+       }
+
+       .video-upload div.success {
+               background-color: #edfcd5;
+               border-color: #d4ebaf;
+       }
+
+       .video-upload div.error p,
+       .video-upload div.success p {
+               margin: 0.5em 0;
+       }
+
+       .video-upload table tr th,
+       .video-upload table tr td {
+               padding: 7px 0;
+               line-height: 1.4em;
+       }
+
+       .video-upload table tr th {
+               width: 180px;
+               font-weight: bold;
+       }
+
+       .video-upload p > label.wptv-video-wordcamp-cb {
+               display: inline;
+               float: none;
+       }
+
+       .video-upload table tr th label .required {
+               line-height: 15px;
+               vertical-align: bottom;
+               margin: 0 3px;
+       }
+
+       .video-upload input[type="text"],
+       .video-upload textarea,
+       .video-upload ul.cats-checkboxes {
+           border-radius: 3px;
+           border: 1px solid #dfdfdf;
+           color: #333;
+           background-color: #fff;
+           padding: 4px;
+           width: 329px;
+               max-width: 329px;
+       }
+
+       .video-upload ul.cats-checkboxes {
+               margin-left: 130px;
+               height: 150px;
+               overflow: auto;
+       }
+
+       .video-upload ul.cats-checkboxes ul.children {
+               margin-left: 15px;
+       }
+
+       .video-upload input[type="text"]:focus,
+       .video-upload textarea:focus {
+               border-color: #bbb;
+       }
+
+       #subtitle-instructions {
+               overflow: auto;
+       }
+
+               #subtitle-instructions img {
+                       border: 1px solid #808080;
+                       max-width: 938px;
+               }
+
+       #video-upload-form p.last,
+       #video-upload-form table tr td.last {
+               padding: 15px 0;
+               text-align: left;
+       }
+
+       #video-upload-form p .invalid {
+               border: 1px solid red;
+       }
+
+       #video-upload-form input[type="submit"] {
+               font-size: 15px;
+               padding: 4px 12px;
+       }
+
+       .page-template-anon-upload-template-php .wptv-hero {
+               padding: 20px;
+       }
+
+       .page-template-anon-upload-template-php .wptv-hero h2 {
+               font-size: 24px;
+       }
+
+       .video-upload-right .accepted-formats {
+               margin-left: 16px;
+       }
+
+       .video-upload-right .accepted-formats li {
+               list-style: square;
+       }
+
+       .video-upload-right h3 {
+               padding-bottom: 4px;
+       }
+
+       .video-upload .pass-form label {
+               float: none;
+               display: inline;
+               width: auto;
+       }
+       </style>
+       <?php
+}
+
+add_action( 'wp_head', 'subtitles_upload_css' );
+
+// Password-protect this form.
+if ( post_password_required() ) :
+       get_header();
+?>
+       <div class="wptv-hero">
+               <div class="single container">
+                       <h2><?php esc_html_e( 'Subtitle a Video', 'wptv' ); ?></h2>
+               </div>
+       </div>
+
+       <div class="container">
+               <div class="video-upload">
+                       <p><?php printf( __( 'Hey there! If you&#8217;re interested in subtitling or captioning videos for WordPress.tv, please fill out the <a href="%s">contact form</a>, and we&#8217;ll be in touch.', 'wptv' ), 'http://wordpress.tv/contact/' ); ?></p>
+                       <div class="pass-form">
+                               <?php echo get_the_password_form(); ?>
+                       </div>
+               </div>
+       </div>
+<?php
+       get_footer();
+       return;
+endif; // post_password_required
+
+if ( ! class_exists( 'VideoPress_Subtitles' ) )
+       wp_die( 'Not ready yet.' );
+
+if ( empty( $_GET['video'] ) )
+       wp_die( 'Needs a video context.' );
+
+$video_id = absint( $_GET['video'] );
+if ( ! wp_attachment_is_video( $video_id ) )
+       wp_die( 'You can only subtitle videos.' );
+
+$video = video_get_info_by_blogpostid( get_current_blog_id(), $video_id );
+$attachment = get_post( $video_id );
+$parent = get_post( $attachment->post_parent );
+
+if ( ! $parent || 'publish' != $parent->post_status )
+       wp_die( 'You can not subtitle this video, sorry.' );
+
+get_header();
+
+$message = '';
+
+if ( ! empty( $_REQUEST['error'] ) ) {
+       $message = (int) $_REQUEST['error'];
+
+       switch ( $message ) {
+               case 1:
+                       $message = 'Error: please provide a subtitles file.';
+                       break;
+               case 2:
+                       $message = 'Error: invalid file type.';
+                       break;
+               case 3:
+                       $message = 'Error: unknown file type.';
+                       break;
+               case 4:
+                       $message = 'Error: please provide a WordPress.org username and a valid email address.';
+                       break;
+               case 5:
+                       $message = 'Unknown error. Please try again later.';
+                       break;
+               case 6:
+                       $message = 'Error: invalid submission.';
+                       break;
+               case 7:
+                       $message = 'Error: invalid language.';
+                       break;
+               case 8:
+                       $message = 'Error: it looks like there already is a subtitles file for the selected language.';
+                       break;
+       }
+       $message = '<div class="error"><p>' . $message . '</p></div>';
+} elseif ( ! empty( $_REQUEST['success'] ) ) {
+       $message = '<div class="success"><p>Your subtitles file has been submitted successfully and is awaiting moderation. Thank you!</p></div>';
+}
+?>
+
+<div class="wptv-hero">
+<div class="single container">
+       <h2><?php esc_html_e( 'Subtitle a Video', 'wptv' ); ?></h2>
+</div>
+</div>
+
+<div class="container">
+       <div class="video-upload">
+               <?php echo $message; ?>
+
+               <p>Subtitling: <a href="<?php echo esc_url( get_permalink( $parent->ID ) ); ?>"><?php echo apply_filters( 'the_title', $parent->post_title ); ?></a></p>
+
+               <form method="post" action="<?php echo admin_url( 'admin-post.php' ); ?>" id="video-upload-form" enctype="multipart/form-data">
+
+                       <?php wp_nonce_field( 'wptv-upload-subtitles', 'wptv-upload-subtitles-nonce' ); ?>
+                       <input type="hidden" name="action" value="wptv_video_upload_subtitles" />
+                       <input type="hidden" name="wptv_video_id" value="<?php echo absint( $video_id ); ?>" />
+
+                       <table>
+                               <tr>
+                                       <th><label for="wptv_wporg_username"><?php _e( 'WordPress.org Username' ); ?><span class="required"> * </span></label></th>
+                                       <td>
+                                               <input type="text" id="wptv_wporg_username" name="wptv_wporg_username" /><br />
+                                               To contribute subtitles, you must be a registered user at the <a href="http://wordpress.org">WordPress.org</a> website. Note that this is the username you use to log in at WordPress.org, not the username you use to log in on your own WordPress-powered site.<br />
+                                               If you think you are registered but aren't sure, you can try logging in at <a href="http://wordpress.org/support/bb-login.php">WordPress.org/support</a>.<br />
+                                               If you don't have a WordPress.org username yet, you can <a href="http://wordpress.org/support/register.php">sign up for a free account</a>.
+                                       </td>
+                               </tr>
+
+                               <tr>
+                                       <th><label for="wptv_author_email"><?php esc_html_e( 'Email Address', 'wptv' ); ?><span class="required"> * </span></label></th>
+                                       <td>
+                                               <input type="text" id="wptv_author_email" name="wptv_author_email" />
+                                       </td>
+                               </tr>
+
+                               <tr>
+                                       <th><label for="wptv_language"><?php _e( 'Language' ); ?><span class="required"> * </span></label></th>
+                                       <td>
+                                               <select name="wptv_language">
+                                                       <?php $tracks = VideoPress_Subtitles::get_tracks( $video->guid ); ?>
+                                                       <?php foreach ( VideoPress_Subtitles::get_languages() as $value => $language ) : ?>
+                                                               <option value="<?php echo esc_attr( $value ); ?>" <?php disabled( ! empty( $tracks[ $value ] ) ); ?> ><?php echo esc_html( $language['localized_label'] ); ?></option>
+                                                       <?php endforeach; ?>
+                                               </select>
+                                       </td>
+                               </tr>
+
+                               <tr>
+                                       <th><label for="wptv_subtitles_file"><?php _e( 'Subtitles File' ); ?><span class="required"> * </span></label></th>
+                                       <td><input type="file" name="wptv_subtitles_file" id="wptv_subtitles_file" /></td>
+                               </tr>
+
+                               <tr>
+                                       <td colspan="2"><em>* All field are required</em></td>
+                               </tr>
+
+                               <tr>
+                                       <td colspan="2" class="last"><input type="submit" id="wptv_subtitles_upload" value="<?php esc_attr_e( 'Submit' ); ?>" /></td>
+                               </tr>
+                       </table>
+               </form>
+       </div>
+
+       <div id="subtitle-instructions">
+               <h3><?php esc_html_e( 'Instructions', 'wptv' ); ?></h3>
+
+               <?php
+                       $instructions = get_post( 17639 );
+                       setup_postdata( $instructions );
+                       the_content();
+                       wp_reset_postdata();
+               ?>
+       </div>
+</div>
+
+<?php get_footer();
</ins></span></pre>
</div>
</div>

</body>
</html>