<!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>[7607] sites/trunk/wordcamp.org/public_html/wp-content/plugins/wcpt: WordCamp: Support Meetup Applications and review in central.</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 { white-space: pre-line; 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/7607">7607</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/7607","name":"Review Commit"}}</script></dd>
<dt style="float: left; width: 6em; font-weight: bold">Author</dt> <dd>vedjain</dd>
<dt style="float: left; width: 6em; font-weight: bold">Date</dt> <dd>2018-08-13 11:52:14 +0000 (Mon, 13 Aug 2018)</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'>WordCamp: Support Meetup Applications and review in central.

Major refactor to WordCamp post types, to extract out code which is then used in Meetup post types and application. This code is **not** 5.x compatible.
Eventually, the aim is to credit contributors for their work organizing meetup groups in the WordPress chapter program, and make use of existing administrative tools to meetup applications/groups.

This is the (Non exhaustive) test plan after this commit is deployed:

- Existing WordCamp schedule
- WordCamp organizer application render.
- Submit WordCamp application. Fill all fields and make sure they exists in app.
- Verify original application.
- Verify protected fields.
- Verify REST API responses for wordcamp posts (#)
- Status mapping, and transition to valid next statuses.
- Move application from Needs Vetting to Needs Site. Add private notes.
- Track and verify application status page.
- Create a site for wordcamp

Test plan for Meetups

- Submit meetup applications. Fill all fields and make sure they are saved.
- Change application status. Add and remove meta box fields to make sure they are saved.</pre>

<h3>Modified Paths</h3>
<ul>
<li><a href="#sitestrunkwordcamporgpublic_htmlwpcontentpluginswcptviewsapplicationswordcampshortcodeapplicationphp">sites/trunk/wordcamp.org/public_html/wp-content/plugins/wcpt/views/applications/wordcamp/shortcode-application.php</a></li>
<li><a href="#sitestrunkwordcamporgpublic_htmlwpcontentpluginswcptviewswordcampmetaboxstatusphp">sites/trunk/wordcamp.org/public_html/wp-content/plugins/wcpt/views/wordcamp/metabox-status.php</a></li>
<li><a href="#sitestrunkwordcamporgpublic_htmlwpcontentpluginswcptwcptfunctionsphp">sites/trunk/wordcamp.org/public_html/wp-content/plugins/wcpt/wcpt-functions.php</a></li>
<li><a href="#sitestrunkwordcamporgpublic_htmlwpcontentpluginswcptwcptloaderphp">sites/trunk/wordcamp.org/public_html/wp-content/plugins/wcpt/wcpt-loader.php</a></li>
<li><a href="#sitestrunkwordcamporgpublic_htmlwpcontentpluginswcptwcptwordcampwordcampadminphp">sites/trunk/wordcamp.org/public_html/wp-content/plugins/wcpt/wcpt-wordcamp/wordcamp-admin.php</a></li>
<li><a href="#sitestrunkwordcamporgpublic_htmlwpcontentpluginswcptwcptwordcampwordcamploaderphp">sites/trunk/wordcamp.org/public_html/wp-content/plugins/wcpt/wcpt-wordcamp/wordcamp-loader.php</a></li>
</ul>

<h3>Added Paths</h3>
<ul>
<li><a href="#sitestrunkwordcamporgpublic_htmlwpcontentpluginswcptcssapplicationsadmincss">sites/trunk/wordcamp.org/public_html/wp-content/plugins/wcpt/css/applications/admin.css</a></li>
<li><a href="#sitestrunkwordcamporgpublic_htmlwpcontentpluginswcptcssapplicationsmeetupcss">sites/trunk/wordcamp.org/public_html/wp-content/plugins/wcpt/css/applications/meetup.css</a></li>
<li>sites/trunk/wordcamp.org/public_html/wp-content/plugins/wcpt/views/applications/meetup/</li>
<li><a href="#sitestrunkwordcamporgpublic_htmlwpcontentpluginswcptviewsapplicationsmeetupshortcodeapplicationphp">sites/trunk/wordcamp.org/public_html/wp-content/plugins/wcpt/views/applications/meetup/shortcode-application.php</a></li>
<li>sites/trunk/wordcamp.org/public_html/wp-content/plugins/wcpt/wcpt-event/</li>
<li><a href="#sitestrunkwordcamporgpublic_htmlwpcontentpluginswcptwcpteventclasseventadminphp">sites/trunk/wordcamp.org/public_html/wp-content/plugins/wcpt/wcpt-event/class-event-admin.php</a></li>
<li><a href="#sitestrunkwordcamporgpublic_htmlwpcontentpluginswcptwcpteventclasseventapplicationphp">sites/trunk/wordcamp.org/public_html/wp-content/plugins/wcpt/wcpt-event/class-event-application.php</a></li>
<li><a href="#sitestrunkwordcamporgpublic_htmlwpcontentpluginswcptwcpteventclasseventloaderphp">sites/trunk/wordcamp.org/public_html/wp-content/plugins/wcpt/wcpt-event/class-event-loader.php</a></li>
<li><a href="#sitestrunkwordcamporgpublic_htmlwpcontentpluginswcptwcpteventtrackerphp">sites/trunk/wordcamp.org/public_html/wp-content/plugins/wcpt/wcpt-event/tracker.php</a></li>
<li>sites/trunk/wordcamp.org/public_html/wp-content/plugins/wcpt/wcpt-meetup/</li>
<li><a href="#sitestrunkwordcamporgpublic_htmlwpcontentpluginswcptwcptmeetupclassmeetupadminphp">sites/trunk/wordcamp.org/public_html/wp-content/plugins/wcpt/wcpt-meetup/class-meetup-admin.php</a></li>
<li><a href="#sitestrunkwordcamporgpublic_htmlwpcontentpluginswcptwcptmeetupclassmeetupapplicationphp">sites/trunk/wordcamp.org/public_html/wp-content/plugins/wcpt/wcpt-meetup/class-meetup-application.php</a></li>
<li><a href="#sitestrunkwordcamporgpublic_htmlwpcontentpluginswcptwcptmeetupmeetuploaderphp">sites/trunk/wordcamp.org/public_html/wp-content/plugins/wcpt/wcpt-meetup/meetup-loader.php</a></li>
<li><a href="#sitestrunkwordcamporgpublic_htmlwpcontentpluginswcptwcptmeetupmeetupphp">sites/trunk/wordcamp.org/public_html/wp-content/plugins/wcpt/wcpt-meetup/meetup.php</a></li>
<li><a href="#sitestrunkwordcamporgpublic_htmlwpcontentpluginswcptwcptwordcampclasswordcampapplicationphp">sites/trunk/wordcamp.org/public_html/wp-content/plugins/wcpt/wcpt-wordcamp/class-wordcamp-application.php</a></li>
<li><a href="#sitestrunkwordcamporgpublic_htmlwpcontentpluginswcptwcptwordcampwordcampphp">sites/trunk/wordcamp.org/public_html/wp-content/plugins/wcpt/wcpt-wordcamp/wordcamp.php</a></li>
</ul>

<h3>Removed Paths</h3>
<ul>
<li><a href="#sitestrunkwordcamporgpublic_htmlwpcontentpluginswcptapplicationscommonphp">sites/trunk/wordcamp.org/public_html/wp-content/plugins/wcpt/applications/common.php</a></li>
<li><a href="#sitestrunkwordcamporgpublic_htmlwpcontentpluginswcptapplicationstrackerphp">sites/trunk/wordcamp.org/public_html/wp-content/plugins/wcpt/applications/tracker.php</a></li>
<li>sites/trunk/wordcamp.org/public_html/wp-content/plugins/wcpt/views/applications/tracker/</li>
</ul>

</div>
<div id="patch">
<h3>Diff</h3>
<a id="sitestrunkwordcamporgpublic_htmlwpcontentpluginswcptapplicationscommonphp"></a>
<div class="delfile"><h4 style="background-color: #eee; color: inherit; margin: 1em 0; padding: 1.3em; font-size: 115%">Deleted: sites/trunk/wordcamp.org/public_html/wp-content/plugins/wcpt/applications/common.php</h4>
<pre class="diff"><span>
<span class="info" style="display: block; padding: 0 10px; color: #888">--- sites/trunk/wordcamp.org/public_html/wp-content/plugins/wcpt/applications/common.php      2018-08-13 07:28:19 UTC (rev 7606)
+++ sites/trunk/wordcamp.org/public_html/wp-content/plugins/wcpt/applications/common.php        2018-08-13 11:52:14 UTC (rev 7607)
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -1,24 +0,0 @@
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-<?php
-
-namespace WordPress_Community\Applications;
-defined( 'WPINC' ) or die();
-
-add_action( 'wp_enqueue_scripts', __NAMESPACE__ . '\enqueue_assets', 11 );
-
-/**
- * Enqueue scripts and stylesheets
- */
-function enqueue_assets() {
-       global $post;
-
-       wp_register_style(
-               'wp-community-applications',
-               plugins_url( 'css/applications/common.css', __DIR__ ),
-               array(),
-               1
-       );
-
-       if ( isset( $post->post_content ) && has_shortcode( $post->post_content, WordCamp\SHORTCODE_SLUG ) ) {
-               wp_enqueue_style(  'wp-community-applications' );
-       }
-}
</del></span></pre></div>
<a id="sitestrunkwordcamporgpublic_htmlwpcontentpluginswcptapplicationstrackerphp"></a>
<div class="delfile"><h4 style="background-color: #eee; color: inherit; margin: 1em 0; padding: 1.3em; font-size: 115%">Deleted: sites/trunk/wordcamp.org/public_html/wp-content/plugins/wcpt/applications/tracker.php</h4>
<pre class="diff"><span>
<span class="info" style="display: block; padding: 0 10px; color: #888">--- sites/trunk/wordcamp.org/public_html/wp-content/plugins/wcpt/applications/tracker.php     2018-08-13 07:28:19 UTC (rev 7606)
+++ sites/trunk/wordcamp.org/public_html/wp-content/plugins/wcpt/applications/tracker.php       2018-08-13 11:52:14 UTC (rev 7607)
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -1,134 +0,0 @@
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-<?php
-
-namespace WordPress_Community\Applications\Tracker;
-use \WordCamp_Loader;
-defined( 'WPINC' ) or die();
-
-const SHORTCODE_SLUG = 'application-tracker';
-
-add_shortcode( SHORTCODE_SLUG,    __NAMESPACE__ . '\render_status_shortcode' );
-add_action( 'wp_enqueue_scripts', __NAMESPACE__ . '\enqueue_scripts'         );
-
-/**
- * Render the [application-tracker] shortcode.
- */
-function render_status_shortcode() {
-       return '<div id="wpc-application-tracker">Loading Application Tracker...</div>';
-}
-
-/**
- * Get camps that are active enough to be shown on the tracker
- *
- * @return array
- */
-function get_active_wordcamps() {
-       $wordcamps          = array();
-       $statuses           = WordCamp_Loader::get_post_statuses();
-       $milestones         = WordCamp_Loader::map_statuses_to_milestones();
-       $inactive_timestamp = strtotime( '60 days ago' );
-
-       $shown_statuses = $statuses;
-       unset( $shown_statuses[ WCPT_FINAL_STATUS ] );
-       $shown_statuses = array_keys( $shown_statuses );
-
-       $raw_posts = get_posts( array(
-               'post_type'      => WCPT_POST_TYPE_ID,
-               'post_status'    => $shown_statuses,
-               'posts_per_page' => 300,
-               'order'          => 'ASC',
-               'orderby'        => 'post_title',
-       ) );
-
-       foreach ( $raw_posts as $key => $post ) {
-               $last_update_timestamp = get_last_update_timestamp( $post->ID );
-
-               if ( $last_update_timestamp <= $inactive_timestamp ) {
-                       continue;
-               }
-
-               $wordcamps[] = array(
-                       'city'       => $post->post_title,
-                       'cityUrl'    => filter_var( get_post_meta( $post->ID, 'URL', true ), FILTER_VALIDATE_URL ),
-                       'applicant'  => get_post_meta( $post->ID, 'Organizer Name', true ),
-                       'milestone'  => $milestones[ $post->post_status ],
-                       'status'     => $statuses[ $post->post_status ],
-                       'lastUpdate' => human_time_diff( time(), $last_update_timestamp ) . ' ago',
-               );
-       }
-
-       return $wordcamps;
-}
-
-/**
- * Get the timestamp of the last time the post status changed
- *
- * @param int $post_id
- *
- * @return int
- */
-function get_last_update_timestamp( $post_id ) {
-       $last_update_timestamp = 0;
-       $status_changes        = get_post_meta( $post_id, '_status_change' );
-
-       if ( $status_changes ) {
-               usort( $status_changes, 'wcpt_sort_log_entries' );
-               $last_update_timestamp = $status_changes[0]['timestamp'];
-       }
-
-       return $last_update_timestamp;
-}
-
-/**
- * Enqueue scripts and styles
- */
-function enqueue_scripts() {
-       global $post;
-
-       wp_register_script(
-               'wpc-application-tracker',
-               plugins_url( 'javascript/tracker/build/applications.min.js', dirname( __FILE__ ) ), // this file was renamed from 'tracker', which was getting flagged by ad blockers
-               array(),
-               1,
-               true
-       );
-
-       wp_register_style(
-               'wpc-application-tracker',
-               plugins_url( 'javascript/tracker/build/applications.min.css', dirname( __FILE__ ) ), // this file was renamed from 'tracker', which was getting flagged by ad blockers
-               array( 'dashicons', 'list-tables' ),
-               1
-       );
-
-       if ( ! is_a( $post, 'WP_POST' ) || ! has_shortcode( $post->post_content, SHORTCODE_SLUG ) ) {
-               return;
-       }
-
-       wp_enqueue_script( 'wpc-application-tracker' );
-
-       wp_localize_script(
-               'wpc-application-tracker',
-               'wpcApplicationTracker',
-               array(
-                       'applications'     => get_active_wordcamps(),
-                       'displayColumns'   => get_display_columns(),
-                       'initialSortField' => 'city',
-               )
-       );
-
-       wp_enqueue_style( 'wpc-application-tracker' );
-}
-
-/**
- * Get the columns headers
- *
- * @return array
- */
-function get_display_columns() {
-       return array(
-               'city'       => 'City',
-               'applicant'  => 'Applicant',
-               'milestone'  => 'Milestone',
-               'status'     => 'Status',
-               'lastUpdate' => 'Updated',
-       );
-}
</del></span></pre></div>
<a id="sitestrunkwordcamporgpublic_htmlwpcontentpluginswcptcssapplicationsadmincss"></a>
<div class="addfile"><h4 style="background-color: #eee; color: inherit; margin: 1em 0; padding: 1.3em; font-size: 115%">Added: sites/trunk/wordcamp.org/public_html/wp-content/plugins/wcpt/css/applications/admin.css</h4>
<pre class="diff"><span>
<span class="info" style="display: block; padding: 0 10px; color: #888">--- sites/trunk/wordcamp.org/public_html/wp-content/plugins/wcpt/css/applications/admin.css                           (rev 0)
+++ sites/trunk/wordcamp.org/public_html/wp-content/plugins/wcpt/css/applications/admin.css     2018-08-13 11:52:14 UTC (rev 7607)
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -0,0 +1,3 @@
</span><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+span.swag-needed-icon {
+    color: goldenrod;
+}
</ins><span class="cx" style="display: block; padding: 0 10px">\ No newline at end of file
</span><span class="cx" style="display: block; padding: 0 10px">Property changes on: sites/trunk/wordcamp.org/public_html/wp-content/plugins/wcpt/css/applications/admin.css
</span><span class="cx" style="display: block; padding: 0 10px">___________________________________________________________________
</span></span></pre></div>
<a id="svneolstyle"></a>
<div class="addfile"><h4 style="background-color: #eee; color: inherit; margin: 1em 0; padding: 1.3em; font-size: 115%">Added: svn:eol-style</h4></div>
<ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+native
</ins><span class="cx" style="display: block; padding: 0 10px">\ No newline at end of property
</span><a id="sitestrunkwordcamporgpublic_htmlwpcontentpluginswcptcssapplicationsmeetupcss"></a>
<div class="addfile"><h4 style="background-color: #eee; color: inherit; margin: 1em 0; padding: 1.3em; font-size: 115%">Added: sites/trunk/wordcamp.org/public_html/wp-content/plugins/wcpt/css/applications/meetup.css</h4>
<pre class="diff"><span>
<span class="info" style="display: block; padding: 0 10px; color: #888">--- sites/trunk/wordcamp.org/public_html/wp-content/plugins/wcpt/css/applications/meetup.css                          (rev 0)
+++ sites/trunk/wordcamp.org/public_html/wp-content/plugins/wcpt/css/applications/meetup.css    2018-08-13 11:52:14 UTC (rev 7607)
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -0,0 +1,26 @@
</span><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+#meetup-application label {
+       display: block;
+       margin-bottom: 1em;
+       font-weight: bold;
+       font-size: 1.1em;
+}
+
+#meetup-application .required-indicator,
+#meetup-application .label-description {
+       font-size: .8em;
+       font-style: italic;
+       opacity: 0.7;
+}
+
+#meetup-application .label-description {
+       display: block;
+}
+
+#meetup-application input,
+#meetup-application select,
+#meetup-application textarea {
+       display: block;
+       width: 100%;
+       margin-top: .15em;
+}
+
</ins><span class="cx" style="display: block; padding: 0 10px">Property changes on: sites/trunk/wordcamp.org/public_html/wp-content/plugins/wcpt/css/applications/meetup.css
</span><span class="cx" style="display: block; padding: 0 10px">___________________________________________________________________
</span></span></pre></div>
<a id="svneolstyle"></a>
<div class="addfile"><h4 style="background-color: #eee; color: inherit; margin: 1em 0; padding: 1.3em; font-size: 115%">Added: svn:eol-style</h4></div>
<ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+native
</ins><span class="cx" style="display: block; padding: 0 10px">\ No newline at end of property
</span><a id="sitestrunkwordcamporgpublic_htmlwpcontentpluginswcptviewsapplicationsmeetupshortcodeapplicationphp"></a>
<div class="addfile"><h4 style="background-color: #eee; color: inherit; margin: 1em 0; padding: 1.3em; font-size: 115%">Added: sites/trunk/wordcamp.org/public_html/wp-content/plugins/wcpt/views/applications/meetup/shortcode-application.php</h4>
<pre class="diff"><span>
<span class="info" style="display: block; padding: 0 10px; color: #888">--- sites/trunk/wordcamp.org/public_html/wp-content/plugins/wcpt/views/applications/meetup/shortcode-application.php                          (rev 0)
+++ sites/trunk/wordcamp.org/public_html/wp-content/plugins/wcpt/views/applications/meetup/shortcode-application.php    2018-08-13 11:52:14 UTC (rev 7607)
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -0,0 +1,120 @@
</span><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+<?php
+
+namespace WordPress_Community\Applications\Meetup;
+defined( 'WPINC' ) or die();
+
+/**
+ * Renders the application form for meetup. Renders shortcode meetup-organizer-application
+ *
+ * @param array $countries
+ */
+function render_meetup_application_form( $countries ) {
+
+       ?>
+
+       <form id="meetup-application" method="post">
+               <label>
+                       First Name
+                       <span class="required-indicator">(required)</span>
+                       <input type="text" name="q_first_name" required/>
+               </label>
+
+               <label>
+                       Last Name
+                       <span class="required-indicator">(required)</span>
+                       <input type="text" name="q_last_name" required/>
+               </label>
+
+               <label>
+                       Email Address
+                       <span class="required-indicator">(required)</span>
+                       <input type="email" name="q_email" required/>
+               </label>
+
+               <label>
+                       City
+                       <span class="required-indicator">(required)</span>
+                       <input type="text" name="q_city" required/>
+               </label>
+
+               <label>
+                       State/Province
+                       <span class="required-indicator">(required)</span>
+                       <input type="text" name="q_state" required/>
+               </label>
+
+               <label>
+                       Country
+                       <span class="required-indicator">(required)</span>
+
+                       <select name="q_country" required>
+                               <option value=""></option>
+
+                               <?php foreach ( $countries as $country ) : ?>
+                                       <option value="<?php echo esc_attr( $country['alpha2'] ); ?>">
+                                               <?php echo esc_html( $country['name'] ); ?>
+                                       </option>
+                               <?php endforeach; ?>
+                       </select>
+               </label>
+
+               <label>
+                       ZIP/Postal Code <span class="required-indicator">(required)</span>
+                       <input type="text" name="q_zip" required/>
+               </label>
+
+               <label>
+                       Is there already a WordPress meetup group in your city?
+                       <span class="required-indicator">(required)</span>
+                       <span class="label-description">If you don't know, please <a href="https://www.meetup.com/topics/wordpress/"
+                                                                                                                                                target="_blank" rel="noopener noreferrer">check Meetup.com</a> first.</span>
+
+                       <select name="q_already_a_meetup" required>
+                               <option value=""></option>
+                               <option>Nope, no current meetup group</option>
+                               <option>Yes, it's the meetup I run now</option>
+                               <option>Yes, but I want to do a different kind of meetup</option>
+                       </select>
+               </label>
+
+               <label>
+                       <!-- todo: Show/hide this via JavaScript based on selected answer above -->
+                       If there's an existing Meetup.com group, please provide the URL
+                       <input type="url" name="q_existing_meetup_url"/>
+               </label>
+
+               <label>
+                       How would you describe yourself?
+                       <span class="required-indicator">(required)</span>
+
+                       <select name="q_describe_yourself" required>
+                               <option value=""></option>
+                               <option>WordPress professional</option>
+                               <option>Current WordPress user or developer</option>
+                               <option>New to WordPress</option>
+                               <option>I don't use WordPress</option>
+                       </select>
+               </label>
+
+               <label>
+                       Your <a href="https://wordpress.org" target="_blank">WordPress.org</a> username
+                       <span class="required-indicator">(required)</span>
+                       <input type="text" name="q_wporg_username" required/>
+               </label>
+
+               <label>
+                       Your <a href="https://chat.wordpress.org" target="_blank">WordPress Slack</a> username
+                       <input type="text" name="q_wp_slack_username"/>
+               </label>
+
+               <label>
+                       Anything you'd like to tell us about yourself, or what you hope to do with a meetup group?
+                       <textarea name="slack_username"></textarea>
+               </label>
+
+               <?php submit_button( 'Submit Application', 'primary', 'submit-application' ); ?>
+
+       </form>
+
+       <?php
+}
</ins><span class="cx" style="display: block; padding: 0 10px">\ No newline at end of file
</span><span class="cx" style="display: block; padding: 0 10px">Property changes on: sites/trunk/wordcamp.org/public_html/wp-content/plugins/wcpt/views/applications/meetup/shortcode-application.php
</span><span class="cx" style="display: block; padding: 0 10px">___________________________________________________________________
</span></span></pre></div>
<a id="svneolstyle"></a>
<div class="addfile"><h4 style="background-color: #eee; color: inherit; margin: 1em 0; padding: 1.3em; font-size: 115%">Added: svn:eol-style</h4></div>
<ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+native
</ins><span class="cx" style="display: block; padding: 0 10px">\ No newline at end of property
</span><a id="sitestrunkwordcamporgpublic_htmlwpcontentpluginswcptviewsapplicationswordcampshortcodeapplicationphp"></a>
<div class="modfile"><h4 style="background-color: #eee; color: inherit; margin: 1em 0; padding: 1.3em; font-size: 115%">Modified: sites/trunk/wordcamp.org/public_html/wp-content/plugins/wcpt/views/applications/wordcamp/shortcode-application.php</h4>
<pre class="diff"><span>
<span class="info" style="display: block; padding: 0 10px; color: #888">--- sites/trunk/wordcamp.org/public_html/wp-content/plugins/wcpt/views/applications/wordcamp/shortcode-application.php        2018-08-13 07:28:19 UTC (rev 7606)
+++ sites/trunk/wordcamp.org/public_html/wp-content/plugins/wcpt/views/applications/wordcamp/shortcode-application.php  2018-08-13 11:52:14 UTC (rev 7607)
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -3,1328 +3,1482 @@
</span><span class="cx" style="display: block; padding: 0 10px"> namespace WordPress_Community\Applications\WordCamp;
</span><span class="cx" style="display: block; padding: 0 10px"> defined( 'WPINC' ) or die();
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-// Modified from https://wordcampcentral.polldaddy.com/s/wordcamp-organizer-application
</del><span class="cx" style="display: block; padding: 0 10px"> 
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-?>
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+/**
+ * Renders the application form for meetup. Renders shortcode meetup-organizer-application
+ * Modified from https://wordcampcentral.polldaddy.com/s/wordcamp-organizer-application
+ *
+ * @param array $countries
+ */
+function render_wordcamp_application_form( $countries ) {
+       ?>
</ins><span class="cx" style="display: block; padding: 0 10px"> 
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-<form id="wordcamp-application" method="post">
-       <div class="PDF_pageOuter">
-               <div class="PDF_pageInner">
-                       <div class="PDF_question" id="pd-question-10000">
-                               <div class="qContent">
-                                       <div class="PDF_QT1900">
-                                               <h2>Part I: About You</h2>
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+ <form id="wordcamp-application" method="post">
+               <div class="PDF_pageOuter">
+                       <div class="PDF_pageInner">
+                               <div class="PDF_question" id="pd-question-10000">
+                                       <div class="qContent">
+                                               <div class="PDF_QT1900">
+                                                       <h2>Part I: About You</h2>
+                                               </div>
</ins><span class="cx" style="display: block; padding: 0 10px">                                         </div>
</span><span class="cx" style="display: block; padding: 0 10px">                                </div>
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                        </div>
</del><span class="cx" style="display: block; padding: 0 10px"> 
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                        <div class="PDF_questionDivide" id="pd-divider-10000"></div>
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                         <div class="PDF_questionDivide" id="pd-divider-10000"></div>
</ins><span class="cx" style="display: block; padding: 0 10px"> 
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                        <div class="PDF_question" id="pd-question-1">
-                               <div class="qNumber">
-                                       Q.1
-                               </div>
-
-                               <div class="qContent">
-                                       <div class="qText">
-                                               Please enter your name.
-                                               <span class="PDF_mand">*</span>
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                         <div class="PDF_question" id="pd-question-1">
+                                       <div class="qNumber">
+                                               Q.1
</ins><span class="cx" style="display: block; padding: 0 10px">                                         </div>
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                                        <div class="PDF_QT800">
-                                               <div>
-                                                       <label for="q_1079074_first_name">First Name</label>
-                                                       <br />
-                                                       <input type="text" class="firstName" maxlength="50" name="q_1079074_first_name" id="q_1079074_first_name" value="" required />
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                                 <div class="qContent">
+                                               <div class="qText">
+                                                       Please enter your name.
+                                                       <span class="PDF_mand">*</span>
</ins><span class="cx" style="display: block; padding: 0 10px">                                                 </div>
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                                                <div>
-                                                       <label for="q_1079074_last_name">Last Name</label>
-                                                       <br />
-                                                       <input type="text" class="lastName" maxlength="50" name="q_1079074_last_name" id="q_1079074_last_name" value="" required />
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                                         <div class="PDF_QT800">
+                                                       <div>
+                                                               <label for="q_1079074_first_name">First Name</label>
+                                                               <br/>
+                                                               <input type="text" class="firstName" maxlength="50" name="q_1079074_first_name"
+                                                                          id="q_1079074_first_name" value="" required/>
+                                                       </div>
+
+                                                       <div>
+                                                               <label for="q_1079074_last_name">Last Name</label>
+                                                               <br/>
+                                                               <input type="text" class="lastName" maxlength="50" name="q_1079074_last_name"
+                                                                          id="q_1079074_last_name" value="" required/>
+                                                       </div>
</ins><span class="cx" style="display: block; padding: 0 10px">                                                 </div>
</span><span class="cx" style="display: block; padding: 0 10px">                                        </div>
</span><span class="cx" style="display: block; padding: 0 10px">                                </div>
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                        </div>
</del><span class="cx" style="display: block; padding: 0 10px"> 
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                        <div class="PDF_questionDivide" id="pd-divider-1"></div>
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                         <div class="PDF_questionDivide" id="pd-divider-1"></div>
</ins><span class="cx" style="display: block; padding: 0 10px"> 
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                        <div class="PDF_question" id="pd-question-2">
-                               <div class="qNumber">
-                                       Q.2
-                               </div>
-
-                               <div class="qContent">
-                                       <div class="qText">
-                                               Please enter your email address.
-                                               <span class="PDF_mand">*</span>
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                         <div class="PDF_question" id="pd-question-2">
+                                       <div class="qNumber">
+                                               Q.2
</ins><span class="cx" style="display: block; padding: 0 10px">                                         </div>
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                                        <div class="PDF_QT1400">
-                                               <label for="q_1079059_email">(e.g. john@example.com)</label>
-                                               <br />
-                                               <input type="email" maxlength="100" name="q_1079059_email" id="q_1079059_email" value="" class="survey-email required" autocomplete="off" required />
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                                 <div class="qContent">
+                                               <div class="qText">
+                                                       Please enter your email address.
+                                                       <span class="PDF_mand">*</span>
+                                               </div>
+
+                                               <div class="PDF_QT1400">
+                                                       <label for="q_1079059_email">(e.g. john@example.com)</label>
+                                                       <br/>
+                                                       <input type="email" maxlength="100" name="q_1079059_email" id="q_1079059_email" value=""
+                                                                  class="survey-email required" autocomplete="off" required/>
+                                               </div>
</ins><span class="cx" style="display: block; padding: 0 10px">                                         </div>
</span><span class="cx" style="display: block; padding: 0 10px">                                </div>
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                        </div>
</del><span class="cx" style="display: block; padding: 0 10px"> 
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                        <div class="PDF_questionDivide" id="pd-divider-2"></div>
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                         <div class="PDF_questionDivide" id="pd-divider-2"></div>
</ins><span class="cx" style="display: block; padding: 0 10px"> 
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                        <div class="PDF_question" id="pd-question-31">
-                               <div class="qNumber">
-                                       Q.31
-                               </div>
-
-                               <div class="qContent">
-                                       <div class="qText">
-                                               What is your wordpress.org username?
-                                               <span class="PDF_mand">*</span>
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                         <div class="PDF_question" id="pd-question-31">
+                                       <div class="qNumber">
+                                               Q.31
</ins><span class="cx" style="display: block; padding: 0 10px">                                         </div>
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                                        <div class="qNote">
-                                               <p>(This is the username you'd use to log in to http://wordpress.org/support/)</p>
-                                       </div>
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                                 <div class="qContent">
+                                               <div class="qText">
+                                                       What is your wordpress.org username?
+                                                       <span class="PDF_mand">*</span>
+                                               </div>
</ins><span class="cx" style="display: block; padding: 0 10px"> 
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                                        <div class="PDF_QT100">
-                                               <input value="" maxlength="500" name="q_4236565_wporg_username" class="large required" type="text" title="What is your wordpress.org username?" required />
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                                         <div class="qNote">
+                                                       <p>(This is the username you'd use to log in to http://wordpress.org/support/)</p>
+                                               </div>
+
+                                               <div class="PDF_QT100">
+                                                       <input value="" maxlength="500" name="q_4236565_wporg_username" class="large required"
+                                                                  type="text" title="What is your wordpress.org username?" required/>
+                                               </div>
</ins><span class="cx" style="display: block; padding: 0 10px">                                         </div>
</span><span class="cx" style="display: block; padding: 0 10px">                                </div>
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                        </div>
</del><span class="cx" style="display: block; padding: 0 10px"> 
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                        <div class="PDF_questionDivide" id="pd-divider-31"></div>
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                         <div class="PDF_questionDivide" id="pd-divider-31"></div>
</ins><span class="cx" style="display: block; padding: 0 10px"> 
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                        <div class="PDF_question" id="pd-question-34">
-                               <div class="qNumber">
-                                       Q.34
-                               </div>
-
-                               <div class="qContent">
-                                       <div class="qText">
-                                               What is your username on <a href="https://chat.wordpress.org" target="_blank">WordPress' Slack workspace</a>?
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                         <div class="PDF_question" id="pd-question-34">
+                                       <div class="qNumber">
+                                               Q.34
</ins><span class="cx" style="display: block; padding: 0 10px">                                         </div>
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                                        <div class="PDF_QT100">
-                                               <input value="" maxlength="500" name="q_4236565_slack_username" class="large" type="text" title="What is your Slack username?" />
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                                 <div class="qContent">
+                                               <div class="qText">
+                                                       What is your username on <a href="https://chat.wordpress.org" target="_blank">WordPress'
+                                                               Slack workspace</a>?
+                                               </div>
+
+                                               <div class="PDF_QT100">
+                                                       <input value="" maxlength="500" name="q_4236565_slack_username" class="large" type="text"
+                                                                  title="What is your Slack username?"/>
+                                               </div>
</ins><span class="cx" style="display: block; padding: 0 10px">                                         </div>
</span><span class="cx" style="display: block; padding: 0 10px">                                </div>
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                        </div>
</del><span class="cx" style="display: block; padding: 0 10px"> 
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                        <div class="PDF_questionDivide"></div>
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                         <div class="PDF_questionDivide"></div>
</ins><span class="cx" style="display: block; padding: 0 10px"> 
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                        <div class="PDF_question">
-                               <div class="qContent">
-                                       <div class="qText">
-                                               Where can we find you online?
-                                       </div>
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                         <div class="PDF_question">
+                                       <div class="qContent">
+                                               <div class="qText">
+                                                       Where can we find you online?
+                                               </div>
</ins><span class="cx" style="display: block; padding: 0 10px"> 
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                                        <div class="PDF_QT100">
-                                               <input value="" maxlength="500" name="where_find_online" class="large" type="text" title="Where can we find you online?" />
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                                         <div class="PDF_QT100">
+                                                       <input value="" maxlength="500" name="where_find_online" class="large" type="text"
+                                                                  title="Where can we find you online?"/>
+                                               </div>
</ins><span class="cx" style="display: block; padding: 0 10px">                                         </div>
</span><span class="cx" style="display: block; padding: 0 10px">                                </div>
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                        </div>
</del><span class="cx" style="display: block; padding: 0 10px"> 
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                        <div class="PDF_questionDivide" id="pd-divider-34"></div>
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                         <div class="PDF_questionDivide" id="pd-divider-34"></div>
</ins><span class="cx" style="display: block; padding: 0 10px"> 
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                        <div class="PDF_question" id="pd-question-3">
-                               <div class="qNumber">
-                                       Q.3
-                               </div>
-
-                               <div class="qContent">
-                                       <div class="qText">
-                                               Please enter your mailing address (at least your city/state or city/country).
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                         <div class="PDF_question" id="pd-question-3">
+                                       <div class="qNumber">
+                                               Q.3
</ins><span class="cx" style="display: block; padding: 0 10px">                                         </div>
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                                        <div class="PDF_QT900">
-                                               <div>
-                                                       <label for="q_1079060_add1">Address Line 1</label>
-                                                       <br />
-                                                       <input type="text" maxlength="100" class="a" name="q_1079060_add1" id="q_1079060_add1" value="" />
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                                 <div class="qContent">
+                                               <div class="qText">
+                                                       Please enter your mailing address (at least your city/state or city/country).
</ins><span class="cx" style="display: block; padding: 0 10px">                                                 </div>
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                                                <div>
-                                                       <label for="q_1079060_add2">Address Line 2</label>
-                                                       <br />
-                                                       <input type="text" maxlength="100" class="b" name="q_1079060_add2" id="q_1079060_add2" value="" />
-                                               </div>
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                                         <div class="PDF_QT900">
+                                                       <div>
+                                                               <label for="q_1079060_add1">Address Line 1</label>
+                                                               <br/>
+                                                               <input type="text" maxlength="100" class="a" name="q_1079060_add1" id="q_1079060_add1"
+                                                                          value=""/>
+                                                       </div>
</ins><span class="cx" style="display: block; padding: 0 10px"> 
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                                                <div>
-                                                       <label for="q_1079060_city">City</label>
-                                                       <br />
-                                                       <input type="text" maxlength="50" class="c" name="q_1079060_city" id="q_1079060_city" value="" />
-                                               </div>
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                                                 <div>
+                                                               <label for="q_1079060_add2">Address Line 2</label>
+                                                               <br/>
+                                                               <input type="text" maxlength="100" class="b" name="q_1079060_add2" id="q_1079060_add2"
+                                                                          value=""/>
+                                                       </div>
</ins><span class="cx" style="display: block; padding: 0 10px"> 
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                                                <div>
-                                                       <label for="q_1079060_state">State</label>
-                                                       <br />
-                                                       <input type="text" maxlength="50" class="d" name="q_1079060_state" id="q_1079060_state" value="" />
-                                               </div>
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                                                 <div>
+                                                               <label for="q_1079060_city">City</label>
+                                                               <br/>
+                                                               <input type="text" maxlength="50" class="c" name="q_1079060_city" id="q_1079060_city"
+                                                                          value=""/>
+                                                       </div>
</ins><span class="cx" style="display: block; padding: 0 10px"> 
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                                                <div>
-                                                       <label for="q_1079060_zip">Zip Code</label>
-                                                       <br />
-                                                       <input type="text" maxlength="20" class="e" name="q_1079060_zip" id="q_1079060_zip" value="" />
-                                               </div>
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                                                 <div>
+                                                               <label for="q_1079060_state">State</label>
+                                                               <br/>
+                                                               <input type="text" maxlength="50" class="d" name="q_1079060_state" id="q_1079060_state"
+                                                                          value=""/>
+                                                       </div>
</ins><span class="cx" style="display: block; padding: 0 10px"> 
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                                                <div>
-                                                       <label for="q_1079060_country">Country</label>
-                                                       <br />
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                                                 <div>
+                                                               <label for="q_1079060_zip">Zip Code</label>
+                                                               <br/>
+                                                               <input type="text" maxlength="20" class="e" name="q_1079060_zip" id="q_1079060_zip"
+                                                                          value=""/>
+                                                       </div>
</ins><span class="cx" style="display: block; padding: 0 10px"> 
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                                                        <select name="q_1079060_country" id="q_1079060_country">
-                                                               <option value=""></option>
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                                                 <div>
+                                                               <label for="q_1079060_country">Country</label>
+                                                               <br/>
</ins><span class="cx" style="display: block; padding: 0 10px"> 
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                                                                <?php foreach ( $countries as $country ) : ?>
-                                                                       <option value="<?php echo esc_attr( $country['alpha2'] ); ?>">
-                                                                               <?php echo esc_html( $country['name'] ); ?>
-                                                                       </option>
-                                                               <?php endforeach; ?>
-                                                       </select>
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                                                         <select name="q_1079060_country" id="q_1079060_country">
+                                                                       <option value=""></option>
+
+                                                                       <?php foreach ( $countries as $country ) : ?>
+                                                                               <option value="<?php echo esc_attr( $country['alpha2'] ); ?>">
+                                                                                       <?php echo esc_html( $country['name'] ); ?>
+                                                                               </option>
+                                                                       <?php endforeach; ?>
+                                                               </select>
+                                                       </div>
</ins><span class="cx" style="display: block; padding: 0 10px">                                                 </div>
</span><span class="cx" style="display: block; padding: 0 10px">                                        </div>
</span><span class="cx" style="display: block; padding: 0 10px">                                </div>
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                        </div>
</del><span class="cx" style="display: block; padding: 0 10px"> 
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                        <div class="PDF_questionDivide" id="pd-divider-3"></div>
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                         <div class="PDF_questionDivide" id="pd-divider-3"></div>
</ins><span class="cx" style="display: block; padding: 0 10px"> 
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                        <div class="PDF_question" id="pd-question-4">
-                               <div class="qNumber">
-                                       Q.4
-                               </div>
-
-                               <div class="qContent">
-                                       <div class="qText">
-                                               How long have you been using WordPress?
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                         <div class="PDF_question" id="pd-question-4">
+                                       <div class="qNumber">
+                                               Q.4
</ins><span class="cx" style="display: block; padding: 0 10px">                                         </div>
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                                        <div class="PDF_QT400">
-                                               <ul>
-                                                       <li>
-                                                               <input type="radio" name="q_1045947_years_using_wp" value="7+ years" id="q_1045947_1865361" />
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                                 <div class="qContent">
+                                               <div class="qText">
+                                                       How long have you been using WordPress?
+                                               </div>
</ins><span class="cx" style="display: block; padding: 0 10px"> 
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                                                                <label for="q_1045947_1865361" value="1865361">
-                                                                       7+ years </label>
-                                                       </li>
-                                                       <li>
-                                                               <input type="radio" name="q_1045947_years_using_wp" value="6 years" id="q_1045947_1865362" />
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                                         <div class="PDF_QT400">
+                                                       <ul>
+                                                               <li>
+                                                                       <input type="radio" name="q_1045947_years_using_wp" value="7+ years"
+                                                                                  id="q_1045947_1865361"/>
</ins><span class="cx" style="display: block; padding: 0 10px"> 
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                                                                <label for="q_1045947_1865362" value="1865362">
-                                                                       6 years </label>
-                                                       </li>
-                                                       <li>
-                                                               <input type="radio" name="q_1045947_years_using_wp" value="5 years" id="q_1045947_1865363" />
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                                                                 <label for="q_1045947_1865361" value="1865361">
+                                                                               7+ years </label>
+                                                               </li>
+                                                               <li>
+                                                                       <input type="radio" name="q_1045947_years_using_wp" value="6 years"
+                                                                                  id="q_1045947_1865362"/>
</ins><span class="cx" style="display: block; padding: 0 10px"> 
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                                                                <label for="q_1045947_1865363" value="1865363">
-                                                                       5 years </label>
-                                                       </li>
-                                                       <li>
-                                                               <input type="radio" name="q_1045947_years_using_wp" value="4 years" id="q_1045947_1865369" />
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                                                                 <label for="q_1045947_1865362" value="1865362">
+                                                                               6 years </label>
+                                                               </li>
+                                                               <li>
+                                                                       <input type="radio" name="q_1045947_years_using_wp" value="5 years"
+                                                                                  id="q_1045947_1865363"/>
</ins><span class="cx" style="display: block; padding: 0 10px"> 
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                                                                <label for="q_1045947_1865369" value="1865369">
-                                                                       4 years </label>
-                                                       </li>
-                                                       <li>
-                                                               <input type="radio" name="q_1045947_years_using_wp" value="3 years" id="q_1045947_1865370" />
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                                                                 <label for="q_1045947_1865363" value="1865363">
+                                                                               5 years </label>
+                                                               </li>
+                                                               <li>
+                                                                       <input type="radio" name="q_1045947_years_using_wp" value="4 years"
+                                                                                  id="q_1045947_1865369"/>
</ins><span class="cx" style="display: block; padding: 0 10px"> 
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                                                                <label for="q_1045947_1865370" value="1865370">
-                                                                       3 years </label>
-                                                       </li>
-                                                       <li>
-                                                               <input type="radio" name="q_1045947_years_using_wp" value="2 years" id="q_1045947_1865371" />
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                                                                 <label for="q_1045947_1865369" value="1865369">
+                                                                               4 years </label>
+                                                               </li>
+                                                               <li>
+                                                                       <input type="radio" name="q_1045947_years_using_wp" value="3 years"
+                                                                                  id="q_1045947_1865370"/>
</ins><span class="cx" style="display: block; padding: 0 10px"> 
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                                                                <label for="q_1045947_1865371" value="1865371">
-                                                                       2 years </label>
-                                                       </li>
-                                                       <li>
-                                                               <input type="radio" name="q_1045947_years_using_wp" value="1 year" id="q_1045947_1865372" />
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                                                                 <label for="q_1045947_1865370" value="1865370">
+                                                                               3 years </label>
+                                                               </li>
+                                                               <li>
+                                                                       <input type="radio" name="q_1045947_years_using_wp" value="2 years"
+                                                                                  id="q_1045947_1865371"/>
</ins><span class="cx" style="display: block; padding: 0 10px"> 
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                                                                <label for="q_1045947_1865372" value="1865372">
-                                                                       1 year </label>
-                                                       </li>
-                                                       <li>
-                                                               <input type="radio" name="q_1045947_years_using_wp" value="less than a year" id="q_1045947_1865373" />
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                                                                 <label for="q_1045947_1865371" value="1865371">
+                                                                               2 years </label>
+                                                               </li>
+                                                               <li>
+                                                                       <input type="radio" name="q_1045947_years_using_wp" value="1 year"
+                                                                                  id="q_1045947_1865372"/>
</ins><span class="cx" style="display: block; padding: 0 10px"> 
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                                                                <label for="q_1045947_1865373" value="1865373">
-                                                                       Less than a year </label>
-                                                       </li>
-                                                       <li>
-                                                               <input type="radio" name="q_1045947_years_using_wp" value="I don't use WordPress yet" id="q_1045947_1865374" />
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                                                                 <label for="q_1045947_1865372" value="1865372">
+                                                                               1 year </label>
+                                                               </li>
+                                                               <li>
+                                                                       <input type="radio" name="q_1045947_years_using_wp" value="less than a year"
+                                                                                  id="q_1045947_1865373"/>
</ins><span class="cx" style="display: block; padding: 0 10px"> 
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                                                                <label for="q_1045947_1865374" value="1865374">
-                                                                       I don't use WordPress yet </label>
-                                                       </li>
-                                               </ul>
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                                                                 <label for="q_1045947_1865373" value="1865373">
+                                                                               Less than a year </label>
+                                                               </li>
+                                                               <li>
+                                                                       <input type="radio" name="q_1045947_years_using_wp"
+                                                                                  value="I don't use WordPress yet" id="q_1045947_1865374"/>
+
+                                                                       <label for="q_1045947_1865374" value="1865374">
+                                                                               I don't use WordPress yet </label>
+                                                               </li>
+                                                       </ul>
+                                               </div>
</ins><span class="cx" style="display: block; padding: 0 10px">                                         </div>
</span><span class="cx" style="display: block; padding: 0 10px">                                </div>
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                        </div>
</del><span class="cx" style="display: block; padding: 0 10px"> 
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                        <div class="PDF_questionDivide" id="pd-divider-4"></div>
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                         <div class="PDF_questionDivide" id="pd-divider-4"></div>
</ins><span class="cx" style="display: block; padding: 0 10px"> 
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                        <div class="PDF_question" id="pd-question-5">
-                               <div class="qNumber">
-                                       Q.5
-                               </div>
-
-                               <div class="qContent">
-                                       <div class="qText">
-                                               How have you been involved in the WordPress community so far?
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                         <div class="PDF_question" id="pd-question-5">
+                                       <div class="qNumber">
+                                               Q.5
</ins><span class="cx" style="display: block; padding: 0 10px">                                         </div>
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                                        <div class="PDF_QT400">
-                                               <ul>
-                                                       <li>
-                                                               <input type="checkbox" name="q_1068246_ways_involved[]" id="q_1068246_1908777" value="I use WordPress for my website(s)" />
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                                 <div class="qContent">
+                                               <div class="qText">
+                                                       How have you been involved in the WordPress community so far?
+                                               </div>
</ins><span class="cx" style="display: block; padding: 0 10px"> 
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                                                                <label for="q_1068246_1908777">I use WordPress for my website(s)</label>
-                                                       </li>
-                                                       <li>
-                                                               <input type="checkbox" name="q_1068246_ways_involved[]" id="q_1068246_1908778" value="I help other people use WordPress for their websites" />
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                                         <div class="PDF_QT400">
+                                                       <ul>
+                                                               <li>
+                                                                       <input type="checkbox" name="q_1068246_ways_involved[]" id="q_1068246_1908777"
+                                                                                  value="I use WordPress for my website(s)"/>
</ins><span class="cx" style="display: block; padding: 0 10px"> 
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                                                                <label for="q_1068246_1908778">I help other people use WordPress for their websites</label>
-                                                       </li>
-                                                       <li>
-                                                               <input type="checkbox" name="q_1068246_ways_involved[]" id="q_1068246_1908779" value="I make plugins" />
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                                                                 <label for="q_1068246_1908777">I use WordPress for my website(s)</label>
+                                                               </li>
+                                                               <li>
+                                                                       <input type="checkbox" name="q_1068246_ways_involved[]" id="q_1068246_1908778"
+                                                                                  value="I help other people use WordPress for their websites"/>
</ins><span class="cx" style="display: block; padding: 0 10px"> 
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                                                                <label for="q_1068246_1908779">I make plugins</label>
-                                                       </li>
-                                                       <li>
-                                                               <input type="checkbox" name="q_1068246_ways_involved[]" id="q_1068246_1908831" value="I make themes" />
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                                                                 <label for="q_1068246_1908778">I help other people use WordPress for their
+                                                                               websites</label>
+                                                               </li>
+                                                               <li>
+                                                                       <input type="checkbox" name="q_1068246_ways_involved[]" id="q_1068246_1908779"
+                                                                                  value="I make plugins"/>
</ins><span class="cx" style="display: block; padding: 0 10px"> 
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                                                                <label for="q_1068246_1908831">I make themes</label>
-                                                       </li>
-                                                       <li>
-                                                               <input type="checkbox" name="q_1068246_ways_involved[]" id="q_1068246_1908832" value="I contribute to the WordPress core codebase" />
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                                                                 <label for="q_1068246_1908779">I make plugins</label>
+                                                               </li>
+                                                               <li>
+                                                                       <input type="checkbox" name="q_1068246_ways_involved[]" id="q_1068246_1908831"
+                                                                                  value="I make themes"/>
</ins><span class="cx" style="display: block; padding: 0 10px"> 
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                                                                <label for="q_1068246_1908832">I contribute to the WordPress core codebase</label>
-                                                       </li>
-                                                       <li>
-                                                               <input type="checkbox" name="q_1068246_ways_involved[]" id="q_1068246_1908833" value="I volunteer in the support forums at wordpress.org" />
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                                                                 <label for="q_1068246_1908831">I make themes</label>
+                                                               </li>
+                                                               <li>
+                                                                       <input type="checkbox" name="q_1068246_ways_involved[]" id="q_1068246_1908832"
+                                                                                  value="I contribute to the WordPress core codebase"/>
</ins><span class="cx" style="display: block; padding: 0 10px"> 
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                                                                <label for="q_1068246_1908833">I volunteer in the support forums at wordpress.org</label>
-                                                       </li>
-                                                       <li>
-                                                               <input type="checkbox" name="q_1068246_ways_involved[]" id="q_1068246_1908834" value="I contribute to the WordPress core UI group" />
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                                                                 <label for="q_1068246_1908832">I contribute to the WordPress core codebase</label>
+                                                               </li>
+                                                               <li>
+                                                                       <input type="checkbox" name="q_1068246_ways_involved[]" id="q_1068246_1908833"
+                                                                                  value="I volunteer in the support forums at wordpress.org"/>
</ins><span class="cx" style="display: block; padding: 0 10px"> 
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                                                                <label for="q_1068246_1908834">I contribute to the WordPress core UI group</label>
-                                                       </li>
-                                                       <li>
-                                                               <input type="checkbox" name="q_1068246_ways_involved[]" id="q_1068246_1908835" value="I'm involved with local WordPress meetups" />
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                                                                 <label for="q_1068246_1908833">I volunteer in the support forums at
+                                                                               wordpress.org</label>
+                                                               </li>
+                                                               <li>
+                                                                       <input type="checkbox" name="q_1068246_ways_involved[]" id="q_1068246_1908834"
+                                                                                  value="I contribute to the WordPress core UI group"/>
</ins><span class="cx" style="display: block; padding: 0 10px"> 
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                                                                <label for="q_1068246_1908835">I'm involved with local WordPress meetups</label>
-                                                       </li>
-                                                       <li>
-                                                               <input type="checkbox" name="q_1068246_ways_involved[]" id="q_1068246_1908836" value="I've been involved with previous WordCamps" />
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                                                                 <label for="q_1068246_1908834">I contribute to the WordPress core UI group</label>
+                                                               </li>
+                                                               <li>
+                                                                       <input type="checkbox" name="q_1068246_ways_involved[]" id="q_1068246_1908835"
+                                                                                  value="I'm involved with local WordPress meetups"/>
</ins><span class="cx" style="display: block; padding: 0 10px"> 
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                                                                <label for="q_1068246_1908836">I've been involved with previous WordCamps</label>
-                                                       </li>
-                                                       <li>
-                                                               <input type="checkbox" name="q_1068246_ways_involved[]" id="q_1068246_1926765" value="WordPress helps me make a living" />
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                                                                 <label for="q_1068246_1908835">I'm involved with local WordPress meetups</label>
+                                                               </li>
+                                                               <li>
+                                                                       <input type="checkbox" name="q_1068246_ways_involved[]" id="q_1068246_1908836"
+                                                                                  value="I've been involved with previous WordCamps"/>
</ins><span class="cx" style="display: block; padding: 0 10px"> 
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                                                                <label for="q_1068246_1926765">WordPress helps me make a living</label>
-                                                       </li>
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                                                                 <label for="q_1068246_1908836">I've been involved with previous WordCamps</label>
+                                                               </li>
+                                                               <li>
+                                                                       <input type="checkbox" name="q_1068246_ways_involved[]" id="q_1068246_1926765"
+                                                                                  value="WordPress helps me make a living"/>
</ins><span class="cx" style="display: block; padding: 0 10px"> 
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                                                        <li>
-                                                               <label for="q_1068246_other">Other:</label>
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                                                                 <label for="q_1068246_1926765">WordPress helps me make a living</label>
+                                                               </li>
</ins><span class="cx" style="display: block; padding: 0 10px"> 
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                                                                <input type="text" class="other" name="q_1068246_ways_involved_other" id="q_1068246_other" value="" style="width: 75%" />
-                                                       </li>
-                                               </ul>
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                                                         <li>
+                                                                       <label for="q_1068246_other">Other:</label>
+
+                                                                       <input type="text" class="other" name="q_1068246_ways_involved_other"
+                                                                                  id="q_1068246_other" value="" style="width: 75%"/>
+                                                               </li>
+                                                       </ul>
+                                               </div>
</ins><span class="cx" style="display: block; padding: 0 10px">                                         </div>
</span><span class="cx" style="display: block; padding: 0 10px">                                </div>
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                        </div>
</del><span class="cx" style="display: block; padding: 0 10px"> 
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                        <div class="PDF_questionDivide" id="pd-divider-5"></div>
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                         <div class="PDF_questionDivide" id="pd-divider-5"></div>
</ins><span class="cx" style="display: block; padding: 0 10px"> 
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                        <div class="PDF_question" id="pd-question-6">
-                               <div class="qNumber">
-                                       Q.6
-                               </div>
-
-                               <div class="qContent">
-                                       <div class="qText">
-                                               Have you ever attended a WordCamp before?
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                         <div class="PDF_question" id="pd-question-6">
+                                       <div class="qNumber">
+                                               Q.6
</ins><span class="cx" style="display: block; padding: 0 10px">                                         </div>
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                                        <div class="PDF_QT400">
-                                               <ul>
-                                                       <li>
-                                                               <input type="radio" name="q_1046032_attended_camp_before" value="Yes, more than one" id="q_1046032_1865479" />
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                                 <div class="qContent">
+                                               <div class="qText">
+                                                       Have you ever attended a WordCamp before?
+                                               </div>
</ins><span class="cx" style="display: block; padding: 0 10px"> 
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                                                                <label for="q_1046032_1865479" value="1865479">
-                                                                       Yes, more than one </label>
-                                                       </li>
-                                                       <li>
-                                                               <input type="radio" name="q_1046032_attended_camp_before" value="Yes, I've been to one" id="q_1046032_1865480" />
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                                         <div class="PDF_QT400">
+                                                       <ul>
+                                                               <li>
+                                                                       <input type="radio" name="q_1046032_attended_camp_before" value="Yes, more than one"
+                                                                                  id="q_1046032_1865479"/>
</ins><span class="cx" style="display: block; padding: 0 10px"> 
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                                                                <label for="q_1046032_1865480" value="1865480">
-                                                                       Yes, I've been to one </label>
-                                                       </li>
-                                                       <li>
-                                                               <input type="radio" name="q_1046032_attended_camp_before" value="No, I haven't been to a WordCamp yet" id="q_1046032_1865481" />
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                                                                 <label for="q_1046032_1865479" value="1865479">
+                                                                               Yes, more than one </label>
+                                                               </li>
+                                                               <li>
+                                                                       <input type="radio" name="q_1046032_attended_camp_before"
+                                                                                  value="Yes, I've been to one" id="q_1046032_1865480"/>
</ins><span class="cx" style="display: block; padding: 0 10px"> 
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                                                                <label for="q_1046032_1865481" value="1865481">
-                                                                       No, I haven't been to a WordCamp yet </label>
-                                                       </li>
-                                               </ul>
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                                                                 <label for="q_1046032_1865480" value="1865480">
+                                                                               Yes, I've been to one </label>
+                                                               </li>
+                                                               <li>
+                                                                       <input type="radio" name="q_1046032_attended_camp_before"
+                                                                                  value="No, I haven't been to a WordCamp yet" id="q_1046032_1865481"/>
</ins><span class="cx" style="display: block; padding: 0 10px"> 
</span><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                                                                        <label for="q_1046032_1865481" value="1865481">
+                                                                               No, I haven't been to a WordCamp yet </label>
+                                                               </li>
+                                                       </ul>
+
+                                               </div>
</ins><span class="cx" style="display: block; padding: 0 10px">                                         </div>
</span><span class="cx" style="display: block; padding: 0 10px">                                </div>
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                        </div>
</del><span class="cx" style="display: block; padding: 0 10px"> 
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                        <div class="PDF_questionDivide" id="pd-divider-6"></div>
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                         <div class="PDF_questionDivide" id="pd-divider-6"></div>
</ins><span class="cx" style="display: block; padding: 0 10px"> 
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                        <div class="PDF_question" id="pd-question-7">
-                               <div class="qNumber">
-                                       Q.7
-                               </div>
-
-                               <div class="qContent">
-                                       <div class="qText">
-                                               What WordCamps have you been to? Please list one per line in this format: City, Year (ex. San Francisco, 2010)
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                         <div class="PDF_question" id="pd-question-7">
+                                       <div class="qNumber">
+                                               Q.7
</ins><span class="cx" style="display: block; padding: 0 10px">                                         </div>
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                                        <div class="PDF_QT200">
-                                               <textarea name="q_1046033_camps_been_to" class="small" rows="10" cols="40" title="What WordCamps have you been to? Please list one pe&hellip;"></textarea>
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                                 <div class="qContent">
+                                               <div class="qText">
+                                                       What WordCamps have you been to? Please list one per line in this format: City, Year (ex.
+                                                       San Francisco, 2010)
+                                               </div>
+
+                                               <div class="PDF_QT200">
+                                                       <textarea name="q_1046033_camps_been_to" class="small" rows="10" cols="40"
+                                                                         title="What WordCamps have you been to? Please list one pe&hellip;"></textarea>
+                                               </div>
</ins><span class="cx" style="display: block; padding: 0 10px">                                         </div>
</span><span class="cx" style="display: block; padding: 0 10px">                                </div>
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                        </div>
</del><span class="cx" style="display: block; padding: 0 10px"> 
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                        <div class="PDF_questionDivide" id="pd-divider-7"></div>
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                         <div class="PDF_questionDivide" id="pd-divider-7"></div>
</ins><span class="cx" style="display: block; padding: 0 10px"> 
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                        <div class="PDF_question" id="pd-question-8">
-                               <div class="qNumber">
-                                       Q.8
-                               </div>
-
-                               <div class="qContent">
-                                       <div class="qText">
-                                               What do you hope to accomplish by organizing a WordCamp?
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                         <div class="PDF_question" id="pd-question-8">
+                                       <div class="qNumber">
+                                               Q.8
</ins><span class="cx" style="display: block; padding: 0 10px">                                         </div>
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                                        <div class="PDF_QT400">
-                                               <ul>
-                                                       <li>
-                                                               <input type="checkbox" name="q_1068223_hope_to_accomplish[]" id="q_1068223_1908730" value="Grow my local WordPress community" />
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                                 <div class="qContent">
+                                               <div class="qText">
+                                                       What do you hope to accomplish by organizing a WordCamp?
+                                               </div>
</ins><span class="cx" style="display: block; padding: 0 10px"> 
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                                                                <label for="q_1068223_1908730">Grow my local WordPress community</label>
-                                                       </li>
-                                                       <li>
-                                                               <input type="checkbox" name="q_1068223_hope_to_accomplish[]" id="q_1068223_1908731" value="Introduce new people to WordPress/teach new users" />
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                                         <div class="PDF_QT400">
+                                                       <ul>
+                                                               <li>
+                                                                       <input type="checkbox" name="q_1068223_hope_to_accomplish[]" id="q_1068223_1908730"
+                                                                                  value="Grow my local WordPress community"/>
</ins><span class="cx" style="display: block; padding: 0 10px"> 
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                                                                <label for="q_1068223_1908731">Introduce new people to WordPress/teach new users</label>
-                                                       </li>
-                                                       <li>
-                                                               <input type="checkbox" name="q_1068223_hope_to_accomplish[]" id="q_1068223_1908732" value="Find collaborators for WordPress projects" />
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                                                                 <label for="q_1068223_1908730">Grow my local WordPress community</label>
+                                                               </li>
+                                                               <li>
+                                                                       <input type="checkbox" name="q_1068223_hope_to_accomplish[]" id="q_1068223_1908731"
+                                                                                  value="Introduce new people to WordPress/teach new users"/>
</ins><span class="cx" style="display: block; padding: 0 10px"> 
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                                                                <label for="q_1068223_1908732">Find collaborators for WordPress projects</label>
-                                                       </li>
-                                                       <li>
-                                                               <input type="checkbox" name="q_1068223_hope_to_accomplish[]" id="q_1068223_1908771" value="Raise my visibility in the community" />
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                                                                 <label for="q_1068223_1908731">Introduce new people to WordPress/teach new
+                                                                               users</label>
+                                                               </li>
+                                                               <li>
+                                                                       <input type="checkbox" name="q_1068223_hope_to_accomplish[]" id="q_1068223_1908732"
+                                                                                  value="Find collaborators for WordPress projects"/>
</ins><span class="cx" style="display: block; padding: 0 10px"> 
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                                                                <label for="q_1068223_1908771">Raise my visibility in the community</label>
-                                                       </li>
-                                                       <li>
-                                                               <input type="checkbox" name="q_1068223_hope_to_accomplish[]" id="q_1068223_1908772" value="Make connections with visiting speakers (like Matt Mullenweg)" />
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                                                                 <label for="q_1068223_1908732">Find collaborators for WordPress projects</label>
+                                                               </li>
+                                                               <li>
+                                                                       <input type="checkbox" name="q_1068223_hope_to_accomplish[]" id="q_1068223_1908771"
+                                                                                  value="Raise my visibility in the community"/>
</ins><span class="cx" style="display: block; padding: 0 10px"> 
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                                                                <label for="q_1068223_1908772">Make connections with visiting speakers (like Matt Mullenweg)</label>
-                                                       </li>
-                                                       <li>
-                                                               <input type="checkbox" name="q_1068223_hope_to_accomplish[]" id="q_1068223_1908773" value="Make money from surplus ticket sales/sponsorships" />
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                                                                 <label for="q_1068223_1908771">Raise my visibility in the community</label>
+                                                               </li>
+                                                               <li>
+                                                                       <input type="checkbox" name="q_1068223_hope_to_accomplish[]" id="q_1068223_1908772"
+                                                                                  value="Make connections with visiting speakers (like Matt Mullenweg)"/>
</ins><span class="cx" style="display: block; padding: 0 10px"> 
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                                                                <label for="q_1068223_1908773">Make money from surplus ticket sales/sponsorships</label>
-                                                       </li>
-                                                       <li>
-                                                               <input type="checkbox" name="q_1068223_hope_to_accomplish[]" id="q_1068223_1908774" value="Have fun/throw a good party" />
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                                                                 <label for="q_1068223_1908772">Make connections with visiting speakers (like Matt
+                                                                               Mullenweg)</label>
+                                                               </li>
+                                                               <li>
+                                                                       <input type="checkbox" name="q_1068223_hope_to_accomplish[]" id="q_1068223_1908773"
+                                                                                  value="Make money from surplus ticket sales/sponsorships"/>
</ins><span class="cx" style="display: block; padding: 0 10px"> 
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                                                                <label for="q_1068223_1908774">Have fun/throw a good party</label>
-                                                       </li>
-                                                       <li>
-                                                               <input type="checkbox" name="q_1068223_hope_to_accomplish[]" id="q_1068223_1908775" value="Be part of the zeitgeist, as WordCamps are very popular right now" />
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                                                                 <label for="q_1068223_1908773">Make money from surplus ticket
+                                                                               sales/sponsorships</label>
+                                                               </li>
+                                                               <li>
+                                                                       <input type="checkbox" name="q_1068223_hope_to_accomplish[]" id="q_1068223_1908774"
+                                                                                  value="Have fun/throw a good party"/>
</ins><span class="cx" style="display: block; padding: 0 10px"> 
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                                                                <label for="q_1068223_1908775">Be part of the zeitgeist, as WordCamps are very popular right now</label>
-                                                       </li>
-                                                       <li>
-                                                               <input type="checkbox" name="q_1068223_hope_to_accomplish[]" id="q_1068223_1908776" value="Inspire people to do more with WordPress" />
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                                                                 <label for="q_1068223_1908774">Have fun/throw a good party</label>
+                                                               </li>
+                                                               <li>
+                                                                       <input type="checkbox" name="q_1068223_hope_to_accomplish[]" id="q_1068223_1908775"
+                                                                                  value="Be part of the zeitgeist, as WordCamps are very popular right now"/>
</ins><span class="cx" style="display: block; padding: 0 10px"> 
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                                                                <label for="q_1068223_1908776">Inspire people to do more with WordPress</label>
-                                                       </li>
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                                                                 <label for="q_1068223_1908775">Be part of the zeitgeist, as WordCamps are very
+                                                                               popular right now</label>
+                                                               </li>
+                                                               <li>
+                                                                       <input type="checkbox" name="q_1068223_hope_to_accomplish[]" id="q_1068223_1908776"
+                                                                                  value="Inspire people to do more with WordPress"/>
</ins><span class="cx" style="display: block; padding: 0 10px"> 
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                                                        <li>
-                                                               <label for="q_1068223_other">Other:</label>
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                                                                 <label for="q_1068223_1908776">Inspire people to do more with WordPress</label>
+                                                               </li>
</ins><span class="cx" style="display: block; padding: 0 10px"> 
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                                                                <input type="text" class="other" name="q_1068223_hope_to_accomplish_other" id="q_1068223_other" value="" style="width: 75%" />
-                                                       </li>
-                                               </ul>
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                                                         <li>
+                                                                       <label for="q_1068223_other">Other:</label>
+
+                                                                       <input type="text" class="other" name="q_1068223_hope_to_accomplish_other"
+                                                                                  id="q_1068223_other" value="" style="width: 75%"/>
+                                                               </li>
+                                                       </ul>
+                                               </div>
</ins><span class="cx" style="display: block; padding: 0 10px">                                         </div>
</span><span class="cx" style="display: block; padding: 0 10px">                                </div>
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                        </div>
</del><span class="cx" style="display: block; padding: 0 10px"> 
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                        <div class="PDF_questionDivide" id="pd-divider-8"></div>
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                         <div class="PDF_questionDivide" id="pd-divider-8"></div>
</ins><span class="cx" style="display: block; padding: 0 10px"> 
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                        <div class="PDF_question" id="pd-question-10001">
-                               <div class="qContent">
-                                       <div class="PDF_QT1900">
-                                               <h2>Part II: About Your Local Community</h2>
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                         <div class="PDF_question" id="pd-question-10001">
+                                       <div class="qContent">
+                                               <div class="PDF_QT1900">
+                                                       <h2>Part II: About Your Local Community</h2>
+                                               </div>
</ins><span class="cx" style="display: block; padding: 0 10px">                                         </div>
</span><span class="cx" style="display: block; padding: 0 10px">                                </div>
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                        </div>
</del><span class="cx" style="display: block; padding: 0 10px"> 
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                        <div class="PDF_questionDivide" id="pd-divider-10001"></div>
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                         <div class="PDF_questionDivide" id="pd-divider-10001"></div>
</ins><span class="cx" style="display: block; padding: 0 10px"> 
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                        <div class="PDF_question" id="pd-question-9">
-                               <div class="qNumber">
-                                       Q.9
-                               </div>
-
-                               <div class="qContent">
-                                       <div class="qText">
-                                               Is there an active WordPress meetup in your area?
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                         <div class="PDF_question" id="pd-question-9">
+                                       <div class="qNumber">
+                                               Q.9
</ins><span class="cx" style="display: block; padding: 0 10px">                                         </div>
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                                        <div class="PDF_QT400">
-                                               <ul>
-                                                       <li>
-                                                               <input type="radio" name="q_1045950_active_meetup" value="Yes" id="q_1045950_1865375" />
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                                 <div class="qContent">
+                                               <div class="qText">
+                                                       Is there an active WordPress meetup in your area?
+                                               </div>
</ins><span class="cx" style="display: block; padding: 0 10px"> 
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                                                                <label for="q_1045950_1865375" value="1865375">
-                                                                       Yes </label>
-                                                       </li>
-                                                       <li>
-                                                               <input type="radio" name="q_1045950_active_meetup" value="No" id="q_1045950_1865376" />
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                                         <div class="PDF_QT400">
+                                                       <ul>
+                                                               <li>
+                                                                       <input type="radio" name="q_1045950_active_meetup" value="Yes"
+                                                                                  id="q_1045950_1865375"/>
</ins><span class="cx" style="display: block; padding: 0 10px"> 
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                                                                <label for="q_1045950_1865376" value="1865376">
-                                                                       No </label>
-                                                       </li>
-                                                       <li>
-                                                               <input type="radio" name="q_1045950_active_meetup" value="I don't know" id="q_1045950_1865377" />
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                                                                 <label for="q_1045950_1865375" value="1865375">
+                                                                               Yes </label>
+                                                               </li>
+                                                               <li>
+                                                                       <input type="radio" name="q_1045950_active_meetup" value="No"
+                                                                                  id="q_1045950_1865376"/>
</ins><span class="cx" style="display: block; padding: 0 10px"> 
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                                                                <label for="q_1045950_1865377" value="1865377">
-                                                                       I don't know </label>
-                                                       </li>
-                                               </ul>
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                                                                 <label for="q_1045950_1865376" value="1865376">
+                                                                               No </label>
+                                                               </li>
+                                                               <li>
+                                                                       <input type="radio" name="q_1045950_active_meetup" value="I don't know"
+                                                                                  id="q_1045950_1865377"/>
+
+                                                                       <label for="q_1045950_1865377" value="1865377">
+                                                                               I don't know </label>
+                                                               </li>
+                                                       </ul>
+                                               </div>
</ins><span class="cx" style="display: block; padding: 0 10px">                                         </div>
</span><span class="cx" style="display: block; padding: 0 10px">                                </div>
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                        </div>
</del><span class="cx" style="display: block; padding: 0 10px"> 
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                        <div class="PDF_questionDivide" id="pd-divider-9"></div>
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                         <div class="PDF_questionDivide" id="pd-divider-9"></div>
</ins><span class="cx" style="display: block; padding: 0 10px"> 
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                        <div class="PDF_question" id="pd-question-10">
-                               <div class="qNumber">
-                                       Q.10
-                               </div>
-
-                               <div class="qContent">
-                                       <div class="qText">
-                                               What is your role in the meetup group?
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                         <div class="PDF_question" id="pd-question-10">
+                                       <div class="qNumber">
+                                               Q.10
</ins><span class="cx" style="display: block; padding: 0 10px">                                         </div>
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                                        <div class="PDF_QT400">
-                                               <ul>
-                                                       <li>
-                                                               <input type="radio" name="q_1045953_role_in_meetup" value="I am the organizer" id="q_1045953_1865378" />
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                                 <div class="qContent">
+                                               <div class="qText">
+                                                       What is your role in the meetup group?
+                                               </div>
</ins><span class="cx" style="display: block; padding: 0 10px"> 
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                                                                <label for="q_1045953_1865378" value="1865378">
-                                                                       I am the organizer </label>
-                                                       </li>
-                                                       <li>
-                                                               <input type="radio" name="q_1045953_role_in_meetup" value="I am a regular attendee and presenter" id="q_1045953_1865379" />
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                                         <div class="PDF_QT400">
+                                                       <ul>
+                                                               <li>
+                                                                       <input type="radio" name="q_1045953_role_in_meetup" value="I am the organizer"
+                                                                                  id="q_1045953_1865378"/>
</ins><span class="cx" style="display: block; padding: 0 10px"> 
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                                                                <label for="q_1045953_1865379" value="1865379">
-                                                                       I am a regular attendee and presenter </label>
-                                                       </li>
-                                                       <li>
-                                                               <input type="radio" name="q_1045953_role_in_meetup" value="I attend regularly but don't present" id="q_1045953_1865380" />
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                                                                 <label for="q_1045953_1865378" value="1865378">
+                                                                               I am the organizer </label>
+                                                               </li>
+                                                               <li>
+                                                                       <input type="radio" name="q_1045953_role_in_meetup"
+                                                                                  value="I am a regular attendee and presenter" id="q_1045953_1865379"/>
</ins><span class="cx" style="display: block; padding: 0 10px"> 
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                                                                <label for="q_1045953_1865380" value="1865380">
-                                                                       I attend regularly but don't present </label>
-                                                       </li>
-                                                       <li>
-                                                               <input type="radio" name="q_1045953_role_in_meetup" value="I attend sometimes" id="q_1045953_1865381" />
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                                                                 <label for="q_1045953_1865379" value="1865379">
+                                                                               I am a regular attendee and presenter </label>
+                                                               </li>
+                                                               <li>
+                                                                       <input type="radio" name="q_1045953_role_in_meetup"
+                                                                                  value="I attend regularly but don't present" id="q_1045953_1865380"/>
</ins><span class="cx" style="display: block; padding: 0 10px"> 
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                                                                <label for="q_1045953_1865381" value="1865381">
-                                                                       I attend sometimes </label>
-                                                       </li>
-                                                       <li>
-                                                               <input type="radio" name="q_1045953_role_in_meetup" value="I attend rarely" id="q_1045953_1865382" />
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                                                                 <label for="q_1045953_1865380" value="1865380">
+                                                                               I attend regularly but don't present </label>
+                                                               </li>
+                                                               <li>
+                                                                       <input type="radio" name="q_1045953_role_in_meetup" value="I attend sometimes"
+                                                                                  id="q_1045953_1865381"/>
</ins><span class="cx" style="display: block; padding: 0 10px"> 
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                                                                <label for="q_1045953_1865382" value="1865382">
-                                                                       I attend rarely </label>
-                                                       </li>
-                                                       <li>
-                                                               <input type="radio" name="q_1045953_role_in_meetup" value="I do not attend the meetups" id="q_1045953_1865383" />
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                                                                 <label for="q_1045953_1865381" value="1865381">
+                                                                               I attend sometimes </label>
+                                                               </li>
+                                                               <li>
+                                                                       <input type="radio" name="q_1045953_role_in_meetup" value="I attend rarely"
+                                                                                  id="q_1045953_1865382"/>
</ins><span class="cx" style="display: block; padding: 0 10px"> 
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                                                                <label for="q_1045953_1865383" value="1865383">
-                                                                       I do not attend the meetups </label>
-                                                       </li>
-                                               </ul>
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                                                                 <label for="q_1045953_1865382" value="1865382">
+                                                                               I attend rarely </label>
+                                                               </li>
+                                                               <li>
+                                                                       <input type="radio" name="q_1045953_role_in_meetup"
+                                                                                  value="I do not attend the meetups" id="q_1045953_1865383"/>
+
+                                                                       <label for="q_1045953_1865383" value="1865383">
+                                                                               I do not attend the meetups </label>
+                                                               </li>
+                                                       </ul>
+                                               </div>
</ins><span class="cx" style="display: block; padding: 0 10px">                                         </div>
</span><span class="cx" style="display: block; padding: 0 10px">                                </div>
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                        </div>
</del><span class="cx" style="display: block; padding: 0 10px"> 
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                        <div class="PDF_questionDivide" id="pd-divider-10"></div>
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                         <div class="PDF_questionDivide" id="pd-divider-10"></div>
</ins><span class="cx" style="display: block; padding: 0 10px"> 
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                        <div class="PDF_question" id="pd-question-11">
-                               <div class="qNumber">
-                                       Q.11
-                               </div>
-
-                               <div class="qContent">
-                                       <div class="qText">
-                                               What is the URL for the meetup group&#039;s website?
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                         <div class="PDF_question" id="pd-question-11">
+                                       <div class="qNumber">
+                                               Q.11
</ins><span class="cx" style="display: block; padding: 0 10px">                                         </div>
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                                        <div class="PDF_QT100">
-                                               <input value="" maxlength="500" name="q_1045972_meetup_url" class="large" type="url" title="What is the URL for the meetup group&#039;s website?" />
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                                 <div class="qContent">
+                                               <div class="qText">
+                                                       What is the URL for the meetup group&#039;s website?
+                                               </div>
+
+                                               <div class="PDF_QT100">
+                                                       <input value="" maxlength="500" name="q_1045972_meetup_url" class="large" type="url"
+                                                                  title="What is the URL for the meetup group&#039;s website?"/>
+                                               </div>
</ins><span class="cx" style="display: block; padding: 0 10px">                                         </div>
</span><span class="cx" style="display: block; padding: 0 10px">                                </div>
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                        </div>
</del><span class="cx" style="display: block; padding: 0 10px"> 
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                        <div class="PDF_questionDivide" id="pd-divider-11"></div>
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                         <div class="PDF_questionDivide" id="pd-divider-11"></div>
</ins><span class="cx" style="display: block; padding: 0 10px"> 
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                        <div class="PDF_question" id="pd-question-12">
-                               <div class="qNumber">
-                                       Q.12
-                               </div>
-
-                               <div class="qContent">
-                                       <div class="qText">
-                                               About how many members are there?
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                         <div class="PDF_question" id="pd-question-12">
+                                       <div class="qNumber">
+                                               Q.12
</ins><span class="cx" style="display: block; padding: 0 10px">                                         </div>
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                                        <div class="PDF_QT400">
-                                               <ul>
-                                                       <li>
-                                                               <input type="radio" name="q_1045967_meetup_members" value="500+" id="q_1045967_1865388" />
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                                 <div class="qContent">
+                                               <div class="qText">
+                                                       About how many members are there?
+                                               </div>
</ins><span class="cx" style="display: block; padding: 0 10px"> 
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                                                                <label for="q_1045967_1865388" value="1865388">
-                                                                       500+ </label>
-                                                       </li>
-                                                       <li>
-                                                               <input type="radio" name="q_1045967_meetup_members" value="300-499" id="q_1045967_1865389" />
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                                         <div class="PDF_QT400">
+                                                       <ul>
+                                                               <li>
+                                                                       <input type="radio" name="q_1045967_meetup_members" value="500+"
+                                                                                  id="q_1045967_1865388"/>
</ins><span class="cx" style="display: block; padding: 0 10px"> 
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                                                                <label for="q_1045967_1865389" value="1865389">
-                                                                       300-499 </label>
-                                                       </li>
-                                                       <li>
-                                                               <input type="radio" name="q_1045967_meetup_members" value="100-299" id="q_1045967_1865390" />
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                                                                 <label for="q_1045967_1865388" value="1865388">
+                                                                               500+ </label>
+                                                               </li>
+                                                               <li>
+                                                                       <input type="radio" name="q_1045967_meetup_members" value="300-499"
+                                                                                  id="q_1045967_1865389"/>
</ins><span class="cx" style="display: block; padding: 0 10px"> 
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                                                                <label for="q_1045967_1865390" value="1865390">
-                                                                       100-299 </label>
-                                                       </li>
-                                                       <li>
-                                                               <input type="radio" name="q_1045967_meetup_members" value="50-99" id="q_1045967_1865391" />
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                                                                 <label for="q_1045967_1865389" value="1865389">
+                                                                               300-499 </label>
+                                                               </li>
+                                                               <li>
+                                                                       <input type="radio" name="q_1045967_meetup_members" value="100-299"
+                                                                                  id="q_1045967_1865390"/>
</ins><span class="cx" style="display: block; padding: 0 10px"> 
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                                                                <label for="q_1045967_1865391" value="1865391">
-                                                                       50-99 </label>
-                                                       </li>
-                                                       <li>
-                                                               <input type="radio" name="q_1045967_meetup_members" value="26-49" id="q_1045967_1865392" />
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                                                                 <label for="q_1045967_1865390" value="1865390">
+                                                                               100-299 </label>
+                                                               </li>
+                                                               <li>
+                                                                       <input type="radio" name="q_1045967_meetup_members" value="50-99"
+                                                                                  id="q_1045967_1865391"/>
</ins><span class="cx" style="display: block; padding: 0 10px"> 
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                                                                <label for="q_1045967_1865392" value="1865392">
-                                                                       26-49 </label>
-                                                       </li>
-                                                       <li>
-                                                               <input type="radio" name="q_1045967_meetup_members" value="1-25" id="q_1045967_1865393" />
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                                                                 <label for="q_1045967_1865391" value="1865391">
+                                                                               50-99 </label>
+                                                               </li>
+                                                               <li>
+                                                                       <input type="radio" name="q_1045967_meetup_members" value="26-49"
+                                                                                  id="q_1045967_1865392"/>
</ins><span class="cx" style="display: block; padding: 0 10px"> 
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                                                                <label for="q_1045967_1865393" value="1865393">
-                                                                       1-25 </label>
-                                                       </li>
-                                                       <li>
-                                                               <input type="radio" name="q_1045967_meetup_members" value="I don't know" id="q_1045967_1926755" />
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                                                                 <label for="q_1045967_1865392" value="1865392">
+                                                                               26-49 </label>
+                                                               </li>
+                                                               <li>
+                                                                       <input type="radio" name="q_1045967_meetup_members" value="1-25"
+                                                                                  id="q_1045967_1865393"/>
</ins><span class="cx" style="display: block; padding: 0 10px"> 
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                                                                <label for="q_1045967_1926755" value="1926755">
-                                                                       I don't know </label>
-                                                       </li>
-                                               </ul>
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                                                                 <label for="q_1045967_1865393" value="1865393">
+                                                                               1-25 </label>
+                                                               </li>
+                                                               <li>
+                                                                       <input type="radio" name="q_1045967_meetup_members" value="I don't know"
+                                                                                  id="q_1045967_1926755"/>
+
+                                                                       <label for="q_1045967_1926755" value="1926755">
+                                                                               I don't know </label>
+                                                               </li>
+                                                       </ul>
+                                               </div>
</ins><span class="cx" style="display: block; padding: 0 10px">                                         </div>
</span><span class="cx" style="display: block; padding: 0 10px">                                </div>
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                        </div>
</del><span class="cx" style="display: block; padding: 0 10px"> 
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                        <div class="PDF_questionDivide" id="pd-divider-12"></div>
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                         <div class="PDF_questionDivide" id="pd-divider-12"></div>
</ins><span class="cx" style="display: block; padding: 0 10px"> 
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                        <div class="PDF_question" id="pd-question-13">
-                               <div class="qNumber">
-                                       Q.13
-                               </div>
-
-                               <div class="qContent">
-                                       <div class="qText">
-                                               How often does the group have meetups?
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                         <div class="PDF_question" id="pd-question-13">
+                                       <div class="qNumber">
+                                               Q.13
</ins><span class="cx" style="display: block; padding: 0 10px">                                         </div>
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                                        <div class="PDF_QT400">
-                                               <ul>
-                                                       <li>
-                                                               <input type="radio" name="q_1045956_how_often_meetup" value="Once per month" id="q_1045956_1865384" />
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                                 <div class="qContent">
+                                               <div class="qText">
+                                                       How often does the group have meetups?
+                                               </div>
</ins><span class="cx" style="display: block; padding: 0 10px"> 
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                                                                <label for="q_1045956_1865384" value="1865384">
-                                                                       Once per month </label>
-                                                       </li>
-                                                       <li>
-                                                               <input type="radio" name="q_1045956_how_often_meetup" value="Several per month" id="q_1045956_1865385" />
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                                         <div class="PDF_QT400">
+                                                       <ul>
+                                                               <li>
+                                                                       <input type="radio" name="q_1045956_how_often_meetup" value="Once per month"
+                                                                                  id="q_1045956_1865384"/>
</ins><span class="cx" style="display: block; padding: 0 10px"> 
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                                                                <label for="q_1045956_1865385" value="1865385">
-                                                                       Several per month </label>
-                                                       </li>
-                                                       <li>
-                                                               <input type="radio" name="q_1045956_how_often_meetup" value="One every couple of months" id="q_1045956_1865386" />
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                                                                 <label for="q_1045956_1865384" value="1865384">
+                                                                               Once per month </label>
+                                                               </li>
+                                                               <li>
+                                                                       <input type="radio" name="q_1045956_how_often_meetup" value="Several per month"
+                                                                                  id="q_1045956_1865385"/>
</ins><span class="cx" style="display: block; padding: 0 10px"> 
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                                                                <label for="q_1045956_1865386" value="1865386">
-                                                                       One every couple of months </label>
-                                                       </li>
-                                                       <li>
-                                                               <input type="radio" name="q_1045956_how_often_meetup" value="There's a group but it never meets" id="q_1045956_1865387" />
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                                                                 <label for="q_1045956_1865385" value="1865385">
+                                                                               Several per month </label>
+                                                               </li>
+                                                               <li>
+                                                                       <input type="radio" name="q_1045956_how_often_meetup"
+                                                                                  value="One every couple of months" id="q_1045956_1865386"/>
</ins><span class="cx" style="display: block; padding: 0 10px"> 
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                                                                <label for="q_1045956_1865387" value="1865387">
-                                                                       There's a group but it never meets </label>
-                                                       </li>
-                                               </ul>
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                                                                 <label for="q_1045956_1865386" value="1865386">
+                                                                               One every couple of months </label>
+                                                               </li>
+                                                               <li>
+                                                                       <input type="radio" name="q_1045956_how_often_meetup"
+                                                                                  value="There's a group but it never meets" id="q_1045956_1865387"/>
+
+                                                                       <label for="q_1045956_1865387" value="1865387">
+                                                                               There's a group but it never meets </label>
+                                                               </li>
+                                                       </ul>
+                                               </div>
</ins><span class="cx" style="display: block; padding: 0 10px">                                         </div>
</span><span class="cx" style="display: block; padding: 0 10px">                                </div>
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                        </div>
</del><span class="cx" style="display: block; padding: 0 10px"> 
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                        <div class="PDF_questionDivide" id="pd-divider-13"></div>
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                         <div class="PDF_questionDivide" id="pd-divider-13"></div>
</ins><span class="cx" style="display: block; padding: 0 10px"> 
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                        <div class="PDF_question" id="pd-question-14">
-                               <div class="qNumber">
-                                       Q.14
-                               </div>
-
-                               <div class="qContent">
-                                       <div class="qText">
-                                               About how many people usually attend the meetups?
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                         <div class="PDF_question" id="pd-question-14">
+                                       <div class="qNumber">
+                                               Q.14
</ins><span class="cx" style="display: block; padding: 0 10px">                                         </div>
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                                        <div class="PDF_QT400">
-                                               <ul>
-                                                       <li>
-                                                               <input type="radio" name="q_1045971_how_many_attend" value="500+" id="q_1045971_1865397" />
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                                 <div class="qContent">
+                                               <div class="qText">
+                                                       About how many people usually attend the meetups?
+                                               </div>
</ins><span class="cx" style="display: block; padding: 0 10px"> 
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                                                                <label for="q_1045971_1865397" value="1865397">
-                                                                       500+ </label>
-                                                       </li>
-                                                       <li>
-                                                               <input type="radio" name="q_1045971_how_many_attend" value="300-499" id="q_1045971_1865398" />
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                                         <div class="PDF_QT400">
+                                                       <ul>
+                                                               <li>
+                                                                       <input type="radio" name="q_1045971_how_many_attend" value="500+"
+                                                                                  id="q_1045971_1865397"/>
</ins><span class="cx" style="display: block; padding: 0 10px"> 
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                                                                <label for="q_1045971_1865398" value="1865398">
-                                                                       300-499 </label>
-                                                       </li>
-                                                       <li>
-                                                               <input type="radio" name="q_1045971_how_many_attend" value="100-299" id="q_1045971_1865399" />
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                                                                 <label for="q_1045971_1865397" value="1865397">
+                                                                               500+ </label>
+                                                               </li>
+                                                               <li>
+                                                                       <input type="radio" name="q_1045971_how_many_attend" value="300-499"
+                                                                                  id="q_1045971_1865398"/>
</ins><span class="cx" style="display: block; padding: 0 10px"> 
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                                                                <label for="q_1045971_1865399" value="1865399">
-                                                                       100-299 </label>
-                                                       </li>
-                                                       <li>
-                                                               <input type="radio" name="q_1045971_how_many_attend" value="50-99" id="q_1045971_1865400" />
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                                                                 <label for="q_1045971_1865398" value="1865398">
+                                                                               300-499 </label>
+                                                               </li>
+                                                               <li>
+                                                                       <input type="radio" name="q_1045971_how_many_attend" value="100-299"
+                                                                                  id="q_1045971_1865399"/>
</ins><span class="cx" style="display: block; padding: 0 10px"> 
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                                                                <label for="q_1045971_1865400" value="1865400">
-                                                                       50-99 </label>
-                                                       </li>
-                                                       <li>
-                                                               <input type="radio" name="q_1045971_how_many_attend" value="26-49" id="q_1045971_1865401" />
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                                                                 <label for="q_1045971_1865399" value="1865399">
+                                                                               100-299 </label>
+                                                               </li>
+                                                               <li>
+                                                                       <input type="radio" name="q_1045971_how_many_attend" value="50-99"
+                                                                                  id="q_1045971_1865400"/>
</ins><span class="cx" style="display: block; padding: 0 10px"> 
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                                                                <label for="q_1045971_1865401" value="1865401">
-                                                                       26-49 </label>
-                                                       </li>
-                                                       <li>
-                                                               <input type="radio" name="q_1045971_how_many_attend" value="1-25" id="q_1045971_1865402" />
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                                                                 <label for="q_1045971_1865400" value="1865400">
+                                                                               50-99 </label>
+                                                               </li>
+                                                               <li>
+                                                                       <input type="radio" name="q_1045971_how_many_attend" value="26-49"
+                                                                                  id="q_1045971_1865401"/>
</ins><span class="cx" style="display: block; padding: 0 10px"> 
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                                                                <label for="q_1045971_1865402" value="1865402">
-                                                                       1-25 </label>
-                                                       </li>
-                                               </ul>
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                                                                 <label for="q_1045971_1865401" value="1865401">
+                                                                               26-49 </label>
+                                                               </li>
+                                                               <li>
+                                                                       <input type="radio" name="q_1045971_how_many_attend" value="1-25"
+                                                                                  id="q_1045971_1865402"/>
+
+                                                                       <label for="q_1045971_1865402" value="1865402">
+                                                                               1-25 </label>
+                                                               </li>
+                                                       </ul>
+                                               </div>
</ins><span class="cx" style="display: block; padding: 0 10px">                                         </div>
</span><span class="cx" style="display: block; padding: 0 10px">                                </div>
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                        </div>
</del><span class="cx" style="display: block; padding: 0 10px"> 
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                        <div class="PDF_questionDivide" id="pd-divider-14"></div>
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                         <div class="PDF_questionDivide" id="pd-divider-14"></div>
</ins><span class="cx" style="display: block; padding: 0 10px"> 
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                        <div class="PDF_question" id="pd-question-15">
-                               <div class="qNumber">
-                                       Q.15
-                               </div>
-
-                               <div class="qContent">
-                                       <div class="qText">
-                                               Have other community tech events (BarCamp, meetups, open source conferences) been successful in your city?
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                         <div class="PDF_question" id="pd-question-15">
+                                       <div class="qNumber">
+                                               Q.15
</ins><span class="cx" style="display: block; padding: 0 10px">                                         </div>
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                                        <div class="PDF_QT400">
-                                               <ul>
-                                                       <li>
-                                                               <input type="radio" name="q_1079086_other_tech_events" value="Yes, and I've attended some of them" id="q_1079086_1926723" />
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                                 <div class="qContent">
+                                               <div class="qText">
+                                                       Have other community tech events (BarCamp, meetups, open source conferences) been successful
+                                                       in your city?
+                                               </div>
</ins><span class="cx" style="display: block; padding: 0 10px"> 
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                                                                <label for="q_1079086_1926723" value="1926723">
-                                                                       Yes, and I've attended some of them </label>
-                                                       </li>
-                                                       <li>
-                                                               <input type="radio" name="q_1079086_other_tech_events" value="Yes, though I haven't attended any" id="q_1079086_1926724" />
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                                         <div class="PDF_QT400">
+                                                       <ul>
+                                                               <li>
+                                                                       <input type="radio" name="q_1079086_other_tech_events"
+                                                                                  value="Yes, and I've attended some of them" id="q_1079086_1926723"/>
</ins><span class="cx" style="display: block; padding: 0 10px"> 
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                                                                <label for="q_1079086_1926724" value="1926724">
-                                                                       Yes, though I haven't attended any </label>
-                                                       </li>
-                                                       <li>
-                                                               <input type="radio" name="q_1079086_other_tech_events" value="No, we've had a few but they weren't very well-attended" id="q_1079086_1926725" />
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                                                                 <label for="q_1079086_1926723" value="1926723">
+                                                                               Yes, and I've attended some of them </label>
+                                                               </li>
+                                                               <li>
+                                                                       <input type="radio" name="q_1079086_other_tech_events"
+                                                                                  value="Yes, though I haven't attended any" id="q_1079086_1926724"/>
</ins><span class="cx" style="display: block; padding: 0 10px"> 
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                                                                <label for="q_1079086_1926725" value="1926725">
-                                                                       No, we've had a few but they weren't very well-attended </label>
-                                                       </li>
-                                                       <li>
-                                                               <input type="radio" name="q_1079086_other_tech_events" value="We haven't had any community tech events yet" id="q_1079086_1926744" />
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                                                                 <label for="q_1079086_1926724" value="1926724">
+                                                                               Yes, though I haven't attended any </label>
+                                                               </li>
+                                                               <li>
+                                                                       <input type="radio" name="q_1079086_other_tech_events"
+                                                                                  value="No, we've had a few but they weren't very well-attended"
+                                                                                  id="q_1079086_1926725"/>
</ins><span class="cx" style="display: block; padding: 0 10px"> 
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                                                                <label for="q_1079086_1926744" value="1926744">
-                                                                       We haven't had any community tech events yet </label>
-                                                       </li>
-                                                       <li>
-                                                               <input type="radio" name="q_1079086_other_tech_events" value="I am not sure what events have been held here before, or if they've been successful" id="q_1079086_1926745" />
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                                                                 <label for="q_1079086_1926725" value="1926725">
+                                                                               No, we've had a few but they weren't very well-attended </label>
+                                                               </li>
+                                                               <li>
+                                                                       <input type="radio" name="q_1079086_other_tech_events"
+                                                                                  value="We haven't had any community tech events yet" id="q_1079086_1926744"/>
</ins><span class="cx" style="display: block; padding: 0 10px"> 
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                                                                <label for="q_1079086_1926745" value="1926745">
-                                                                       I am not sure what events have been held here before, or if they've been successful </label>
-                                                       </li>
-                                               </ul>
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                                                                 <label for="q_1079086_1926744" value="1926744">
+                                                                               We haven't had any community tech events yet </label>
+                                                               </li>
+                                                               <li>
+                                                                       <input type="radio" name="q_1079086_other_tech_events"
+                                                                                  value="I am not sure what events have been held here before, or if they've been successful"
+                                                                                  id="q_1079086_1926745"/>
+
+                                                                       <label for="q_1079086_1926745" value="1926745">
+                                                                               I am not sure what events have been held here before, or if they've been
+                                                                               successful </label>
+                                                               </li>
+                                                       </ul>
+                                               </div>
</ins><span class="cx" style="display: block; padding: 0 10px">                                         </div>
</span><span class="cx" style="display: block; padding: 0 10px">                                </div>
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                        </div>
</del><span class="cx" style="display: block; padding: 0 10px"> 
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                        <div class="PDF_questionDivide" id="pd-divider-15"></div>
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                         <div class="PDF_questionDivide" id="pd-divider-15"></div>
</ins><span class="cx" style="display: block; padding: 0 10px"> 
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                        <div class="PDF_question" id="pd-question-16">
-                               <div class="qNumber">
-                                       Q.16
-                               </div>
-
-                               <div class="qContent">
-                                       <div class="qText">
-                                               List any community tech events that have/have not been successful in your city.
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                         <div class="PDF_question" id="pd-question-16">
+                                       <div class="qNumber">
+                                               Q.16
</ins><span class="cx" style="display: block; padding: 0 10px">                                         </div>
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                                        <div class="PDF_QT200">
-                                               <textarea name="q_1079082_other_tech_events_success" class="small" rows="10" cols="40" title="List any community tech events that have/have not b&hellip;"></textarea>
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                                 <div class="qContent">
+                                               <div class="qText">
+                                                       List any community tech events that have/have not been successful in your city.
+                                               </div>
+
+                                               <div class="PDF_QT200">
+                                                       <textarea name="q_1079082_other_tech_events_success" class="small" rows="10" cols="40"
+                                                                         title="List any community tech events that have/have not b&hellip;"></textarea>
+                                               </div>
</ins><span class="cx" style="display: block; padding: 0 10px">                                         </div>
</span><span class="cx" style="display: block; padding: 0 10px">                                </div>
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                        </div>
</del><span class="cx" style="display: block; padding: 0 10px"> 
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                        <div class="PDF_questionDivide" id="pd-divider-16"></div>
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                         <div class="PDF_questionDivide" id="pd-divider-16"></div>
</ins><span class="cx" style="display: block; padding: 0 10px"> 
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                        <div class="PDF_question" id="pd-question-10002">
-                               <div class="qContent">
-                                       <div class="PDF_QT1900">
-                                               <h2>Part III: About Your Potential WordCamp</h2>
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                         <div class="PDF_question" id="pd-question-10002">
+                                       <div class="qContent">
+                                               <div class="PDF_QT1900">
+                                                       <h2>Part III: About Your Potential WordCamp</h2>
+                                               </div>
</ins><span class="cx" style="display: block; padding: 0 10px">                                         </div>
</span><span class="cx" style="display: block; padding: 0 10px">                                </div>
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                        </div>
</del><span class="cx" style="display: block; padding: 0 10px"> 
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                        <div class="PDF_questionDivide" id="pd-divider-10002"></div>
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                         <div class="PDF_questionDivide" id="pd-divider-10002"></div>
</ins><span class="cx" style="display: block; padding: 0 10px"> 
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                        <div class="PDF_question" id="pd-question-17">
-                               <div class="qNumber">
-                                       Q.17
-                               </div>
-
-                               <div class="qContent">
-                                       <div class="qText">
-                                               Enter the city, state/province, and country where you would like to organize a WordCamp.
-                                               <span class="PDF_mand">*</span>
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                         <div class="PDF_question" id="pd-question-17">
+                                       <div class="qNumber">
+                                               Q.17
</ins><span class="cx" style="display: block; padding: 0 10px">                                         </div>
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                                        <div class="PDF_QT100">
-                                               <input value="" maxlength="500" name="q_1079103_wordcamp_location" class="large required" type="text" title="Enter the city, state/province, and country where y&hellip;" required />
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                                 <div class="qContent">
+                                               <div class="qText">
+                                                       Enter the city, state/province, and country where you would like to organize a WordCamp.
+                                                       <span class="PDF_mand">*</span>
+                                               </div>
+
+                                               <div class="PDF_QT100">
+                                                       <input value="" maxlength="500" name="q_1079103_wordcamp_location" class="large required"
+                                                                  type="text" title="Enter the city, state/province, and country where y&hellip;"
+                                                                  required/>
+                                               </div>
</ins><span class="cx" style="display: block; padding: 0 10px">                                         </div>
</span><span class="cx" style="display: block; padding: 0 10px">                                </div>
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                        </div>
</del><span class="cx" style="display: block; padding: 0 10px"> 
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                        <div class="PDF_questionDivide" id="pd-divider-17"></div>
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                         <div class="PDF_questionDivide" id="pd-divider-17"></div>
</ins><span class="cx" style="display: block; padding: 0 10px"> 
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                        <div class="PDF_question" id="pd-question-18">
-                               <div class="qNumber">
-                                       Q.18
-                               </div>
-
-                               <div class="qContent">
-                                       <div class="qText">
-                                               When do you want to have a WordCamp in your city? (month/year)
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                         <div class="PDF_question" id="pd-question-18">
+                                       <div class="qNumber">
+                                               Q.18
</ins><span class="cx" style="display: block; padding: 0 10px">                                         </div>
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                                        <div class="PDF_QT100">
-                                               <input value="" maxlength="500" name="q_1046006_wordcamp_date" class="large" type="text" title="When do you want to have a WordCamp in your city? (&hellip;" />
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                                 <div class="qContent">
+                                               <div class="qText">
+                                                       When do you want to have a WordCamp in your city? (month/year)
+                                               </div>
+
+                                               <div class="PDF_QT100">
+                                                       <input value="" maxlength="500" name="q_1046006_wordcamp_date" class="large" type="text"
+                                                                  title="When do you want to have a WordCamp in your city? (&hellip;"/>
+                                               </div>
</ins><span class="cx" style="display: block; padding: 0 10px">                                         </div>
</span><span class="cx" style="display: block; padding: 0 10px">                                </div>
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                        </div>
</del><span class="cx" style="display: block; padding: 0 10px"> 
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                        <div class="PDF_questionDivide" id="pd-divider-18"></div>
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                         <div class="PDF_questionDivide" id="pd-divider-18"></div>
</ins><span class="cx" style="display: block; padding: 0 10px"> 
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                        <div class="PDF_question" id="pd-question-19">
-                               <div class="qNumber">
-                                       Q.19
-                               </div>
-
-                               <div class="qContent">
-                                       <div class="qText">
-                                               How many people do you think would attend?
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                         <div class="PDF_question" id="pd-question-19">
+                                       <div class="qNumber">
+                                               Q.19
</ins><span class="cx" style="display: block; padding: 0 10px">                                         </div>
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                                        <div class="PDF_QT100">
-                                               <input value="" maxlength="500" name="q_1046007_how_many_attendees" class="large" type="text" title="How many people do you think would attend?" />
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                                 <div class="qContent">
+                                               <div class="qText">
+                                                       How many people do you think would attend?
+                                               </div>
+
+                                               <div class="PDF_QT100">
+                                                       <input value="" maxlength="500" name="q_1046007_how_many_attendees" class="large"
+                                                                  type="text" title="How many people do you think would attend?"/>
+                                               </div>
</ins><span class="cx" style="display: block; padding: 0 10px">                                         </div>
</span><span class="cx" style="display: block; padding: 0 10px">                                </div>
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                        </div>
</del><span class="cx" style="display: block; padding: 0 10px"> 
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                        <div class="PDF_questionDivide" id="pd-divider-19"></div>
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                         <div class="PDF_questionDivide" id="pd-divider-19"></div>
</ins><span class="cx" style="display: block; padding: 0 10px"> 
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                        <div class="PDF_question" id="pd-question-20">
-                               <div class="qNumber">
-                                       Q.20
-                               </div>
-
-                               <div class="qContent">
-                                       <div class="qText">
-                                               Have you ever organized an event like this before?
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                         <div class="PDF_question" id="pd-question-20">
+                                       <div class="qNumber">
+                                               Q.20
</ins><span class="cx" style="display: block; padding: 0 10px">                                         </div>
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                                        <div class="PDF_QT400">
-                                               <ul>
-                                                       <li>
-                                                               <input type="radio" name="q_1046038_organized_event_before" value="Yes, I've planned events of similar size/scope" id="q_1046038_1865485" />
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                                 <div class="qContent">
+                                               <div class="qText">
+                                                       Have you ever organized an event like this before?
+                                               </div>
</ins><span class="cx" style="display: block; padding: 0 10px"> 
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                                                                <label for="q_1046038_1865485" value="1865485">
-                                                                       Yes, I've planned events of similar size/scope </label>
-                                                       </li>
-                                                       <li>
-                                                               <input type="radio" name="q_1046038_organized_event_before" value="I've organized similar types of events, but smaller" id="q_1046038_1865486" />
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                                         <div class="PDF_QT400">
+                                                       <ul>
+                                                               <li>
+                                                                       <input type="radio" name="q_1046038_organized_event_before"
+                                                                                  value="Yes, I've planned events of similar size/scope"
+                                                                                  id="q_1046038_1865485"/>
</ins><span class="cx" style="display: block; padding: 0 10px"> 
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                                                                <label for="q_1046038_1865486" value="1865486">
-                                                                       I've organized similar types of events, but smaller </label>
-                                                       </li>
-                                                       <li>
-                                                               <input type="radio" name="q_1046038_organized_event_before" value="I've organized other events" id="q_1046038_1865487" />
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                                                                 <label for="q_1046038_1865485" value="1865485">
+                                                                               Yes, I've planned events of similar size/scope </label>
+                                                               </li>
+                                                               <li>
+                                                                       <input type="radio" name="q_1046038_organized_event_before"
+                                                                                  value="I've organized similar types of events, but smaller"
+                                                                                  id="q_1046038_1865486"/>
</ins><span class="cx" style="display: block; padding: 0 10px"> 
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                                                                <label for="q_1046038_1865487" value="1865487">
-                                                                       I've organized other events </label>
-                                                       </li>
-                                                       <li>
-                                                               <input type="radio" name="q_1046038_organized_event_before" value="I've never organized an event before" id="q_1046038_1865495" />
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                                                                 <label for="q_1046038_1865486" value="1865486">
+                                                                               I've organized similar types of events, but smaller </label>
+                                                               </li>
+                                                               <li>
+                                                                       <input type="radio" name="q_1046038_organized_event_before"
+                                                                                  value="I've organized other events" id="q_1046038_1865487"/>
</ins><span class="cx" style="display: block; padding: 0 10px"> 
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                                                                <label for="q_1046038_1865495" value="1865495">
-                                                                       I've never organized an event before </label>
-                                                       </li>
-                                               </ul>
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                                                                 <label for="q_1046038_1865487" value="1865487">
+                                                                               I've organized other events </label>
+                                                               </li>
+                                                               <li>
+                                                                       <input type="radio" name="q_1046038_organized_event_before"
+                                                                                  value="I've never organized an event before" id="q_1046038_1865495"/>
+
+                                                                       <label for="q_1046038_1865495" value="1865495">
+                                                                               I've never organized an event before </label>
+                                                               </li>
+                                                       </ul>
+                                               </div>
</ins><span class="cx" style="display: block; padding: 0 10px">                                         </div>
</span><span class="cx" style="display: block; padding: 0 10px">                                </div>
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                        </div>
</del><span class="cx" style="display: block; padding: 0 10px"> 
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                        <div class="PDF_questionDivide" id="pd-divider-20"></div>
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                         <div class="PDF_questionDivide" id="pd-divider-20"></div>
</ins><span class="cx" style="display: block; padding: 0 10px"> 
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                        <div class="PDF_question" id="pd-question-21">
-                               <div class="qNumber">
-                                       Q.21
-                               </div>
-
-                               <div class="qContent">
-                                       <div class="qText">
-                                               Please give a brief description of the events you&#039;ve been involved in organizing and what your role was.
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                         <div class="PDF_question" id="pd-question-21">
+                                       <div class="qNumber">
+                                               Q.21
</ins><span class="cx" style="display: block; padding: 0 10px">                                         </div>
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                                        <div class="PDF_QT200">
-                                               <textarea name="q_1046099_describe_events" class="small" rows="10" cols="40" title="Please give a brief description of the events you&#039;v&hellip;"></textarea>
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                                 <div class="qContent">
+                                               <div class="qText">
+                                                       Please give a brief description of the events you&#039;ve been involved in organizing and
+                                                       what your role was.
+                                               </div>
+
+                                               <div class="PDF_QT200">
+                                                       <textarea name="q_1046099_describe_events" class="small" rows="10" cols="40"
+                                                                         title="Please give a brief description of the events you&#039;v&hellip;"></textarea>
+                                               </div>
</ins><span class="cx" style="display: block; padding: 0 10px">                                         </div>
</span><span class="cx" style="display: block; padding: 0 10px">                                </div>
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                        </div>
</del><span class="cx" style="display: block; padding: 0 10px"> 
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                        <div class="PDF_questionDivide" id="pd-divider-21"></div>
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                         <div class="PDF_questionDivide" id="pd-divider-21"></div>
</ins><span class="cx" style="display: block; padding: 0 10px"> 
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                        <div class="PDF_question" id="pd-question-22">
-                               <div class="qNumber">
-                                       Q.22
-                               </div>
-
-                               <div class="qContent">
-                                       <div class="qText">
-                                               Do you have at least 2 co-organizers?
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                         <div class="PDF_question" id="pd-question-22">
+                                       <div class="qNumber">
+                                               Q.22
</ins><span class="cx" style="display: block; padding: 0 10px">                                         </div>
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                                        <div class="PDF_QT400">
-                                               <ul>
-                                                       <li>
-                                                               <input type="radio" name="q_1046101_have_co_organizers" value="Yes, I have co-organizers already" id="q_1046101_1908677" />
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                                 <div class="qContent">
+                                               <div class="qText">
+                                                       Do you have at least 2 co-organizers?
+                                               </div>
</ins><span class="cx" style="display: block; padding: 0 10px"> 
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                                                                <label for="q_1046101_1908677" value="1908677">
-                                                                       Yes, I have co-organizers already </label>
-                                                       </li>
-                                                       <li>
-                                                               <input type="radio" name="q_1046101_have_co_organizers" value="Nope, but I know some people who might be interested" id="q_1046101_1865560" />
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                                         <div class="PDF_QT400">
+                                                       <ul>
+                                                               <li>
+                                                                       <input type="radio" name="q_1046101_have_co_organizers"
+                                                                                  value="Yes, I have co-organizers already" id="q_1046101_1908677"/>
</ins><span class="cx" style="display: block; padding: 0 10px"> 
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                                                                <label for="q_1046101_1865560" value="1865560">
-                                                                       Nope, but I know some people who might be interested </label>
-                                                       </li>
-                                                       <li>
-                                                               <input type="radio" name="q_1046101_have_co_organizers" value="Nope, I probably need help to find co-organizers" id="q_1046101_1865561" />
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                                                                 <label for="q_1046101_1908677" value="1908677">
+                                                                               Yes, I have co-organizers already </label>
+                                                               </li>
+                                                               <li>
+                                                                       <input type="radio" name="q_1046101_have_co_organizers"
+                                                                                  value="Nope, but I know some people who might be interested"
+                                                                                  id="q_1046101_1865560"/>
</ins><span class="cx" style="display: block; padding: 0 10px"> 
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                                                                <label for="q_1046101_1865561" value="1865561">
-                                                                       Nope, I probably need help to find co-organizers </label>
-                                                       </li>
-                                                       <li>
-                                                               <input type="radio" name="q_1046101_have_co_organizers" value="Nope, I want to do it by myself" id="q_1046101_1865562" />
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                                                                 <label for="q_1046101_1865560" value="1865560">
+                                                                               Nope, but I know some people who might be interested </label>
+                                                               </li>
+                                                               <li>
+                                                                       <input type="radio" name="q_1046101_have_co_organizers"
+                                                                                  value="Nope, I probably need help to find co-organizers"
+                                                                                  id="q_1046101_1865561"/>
</ins><span class="cx" style="display: block; padding: 0 10px"> 
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                                                                <label for="q_1046101_1865562" value="1865562">
-                                                                       Nope, I want to do it by myself </label>
-                                                       </li>
-                                               </ul>
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                                                                 <label for="q_1046101_1865561" value="1865561">
+                                                                               Nope, I probably need help to find co-organizers </label>
+                                                               </li>
+                                                               <li>
+                                                                       <input type="radio" name="q_1046101_have_co_organizers"
+                                                                                  value="Nope, I want to do it by myself" id="q_1046101_1865562"/>
+
+                                                                       <label for="q_1046101_1865562" value="1865562">
+                                                                               Nope, I want to do it by myself </label>
+                                                               </li>
+                                                       </ul>
+                                               </div>
</ins><span class="cx" style="display: block; padding: 0 10px">                                         </div>
</span><span class="cx" style="display: block; padding: 0 10px">                                </div>
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                        </div>
</del><span class="cx" style="display: block; padding: 0 10px"> 
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                        <div class="PDF_questionDivide" id="pd-divider-22"></div>
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                         <div class="PDF_questionDivide" id="pd-divider-22"></div>
</ins><span class="cx" style="display: block; padding: 0 10px"> 
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                        <div class="PDF_question" id="pd-question-23">
-                               <div class="qNumber">
-                                       Q.23
-                               </div>
-
-                               <div class="qContent">
-                                       <div class="qText">
-                                               What&#039;s your relationship to your co-organizers?
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                         <div class="PDF_question" id="pd-question-23">
+                                       <div class="qNumber">
+                                               Q.23
</ins><span class="cx" style="display: block; padding: 0 10px">                                         </div>
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                                        <div class="PDF_QT400">
-                                               <ul>
-                                                       <li>
-                                                               <input type="checkbox" name="q_1068188_relationship_co_organizers[]" id="q_1068188_1908678" value="We work for the same company" />
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                                 <div class="qContent">
+                                               <div class="qText">
+                                                       What&#039;s your relationship to your co-organizers?
+                                               </div>
</ins><span class="cx" style="display: block; padding: 0 10px"> 
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                                                                <label for="q_1068188_1908678">We work for the same company</label>
-                                                       </li>
-                                                       <li>
-                                                               <input type="checkbox" name="q_1068188_relationship_co_organizers[]" id="q_1068188_1908679" value="We're friends" />
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                                         <div class="PDF_QT400">
+                                                       <ul>
+                                                               <li>
+                                                                       <input type="checkbox" name="q_1068188_relationship_co_organizers[]"
+                                                                                  id="q_1068188_1908678" value="We work for the same company"/>
</ins><span class="cx" style="display: block; padding: 0 10px"> 
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                                                                <label for="q_1068188_1908679">We're friends</label>
-                                                       </li>
-                                                       <li>
-                                                               <input type="checkbox" name="q_1068188_relationship_co_organizers[]" id="q_1068188_1908680" value="We've collaborated on projects before" />
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                                                                 <label for="q_1068188_1908678">We work for the same company</label>
+                                                               </li>
+                                                               <li>
+                                                                       <input type="checkbox" name="q_1068188_relationship_co_organizers[]"
+                                                                                  id="q_1068188_1908679" value="We're friends"/>
</ins><span class="cx" style="display: block; padding: 0 10px"> 
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                                                                <label for="q_1068188_1908680">We've collaborated on projects before</label>
-                                                       </li>
-                                                       <li>
-                                                               <input type="checkbox" name="q_1068188_relationship_co_organizers[]" id="q_1068188_1908689" value="We met through the meetup group/other tech event" />
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                                                                 <label for="q_1068188_1908679">We're friends</label>
+                                                               </li>
+                                                               <li>
+                                                                       <input type="checkbox" name="q_1068188_relationship_co_organizers[]"
+                                                                                  id="q_1068188_1908680" value="We've collaborated on projects before"/>
</ins><span class="cx" style="display: block; padding: 0 10px"> 
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                                                                <label for="q_1068188_1908689">We met through the meetup group/other tech event</label>
-                                                       </li>
-                                                       <li>
-                                                               <label for="q_1068188_other">Other:</label>
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                                                                 <label for="q_1068188_1908680">We've collaborated on projects before</label>
+                                                               </li>
+                                                               <li>
+                                                                       <input type="checkbox" name="q_1068188_relationship_co_organizers[]"
+                                                                                  id="q_1068188_1908689"
+                                                                                  value="We met through the meetup group/other tech event"/>
</ins><span class="cx" style="display: block; padding: 0 10px"> 
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                                                                <input type="text" class="other" name="q_1068188_relationship_co_organizers_other" id="q_1068188_other" value="" style="width: 75%" />
-                                                       </li>
-                                               </ul>
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                                                                 <label for="q_1068188_1908689">We met through the meetup group/other tech
+                                                                               event</label>
+                                                               </li>
+                                                               <li>
+                                                                       <label for="q_1068188_other">Other:</label>
+
+                                                                       <input type="text" class="other" name="q_1068188_relationship_co_organizers_other"
+                                                                                  id="q_1068188_other" value="" style="width: 75%"/>
+                                                               </li>
+                                                       </ul>
+                                               </div>
</ins><span class="cx" style="display: block; padding: 0 10px">                                         </div>
</span><span class="cx" style="display: block; padding: 0 10px">                                </div>
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                        </div>
</del><span class="cx" style="display: block; padding: 0 10px"> 
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                        <div class="PDF_questionDivide" id="pd-divider-23"></div>
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                         <div class="PDF_questionDivide" id="pd-divider-23"></div>
</ins><span class="cx" style="display: block; padding: 0 10px"> 
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                        <div class="PDF_question" id="pd-question-24">
-                               <div class="qNumber">
-                                       Q.24
-                               </div>
-
-                               <div class="qContent">
-                                       <div class="qText">
-                                               Please enter the names and email addresses of your co-organizers here.
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                         <div class="PDF_question" id="pd-question-24">
+                                       <div class="qNumber">
+                                               Q.24
</ins><span class="cx" style="display: block; padding: 0 10px">                                         </div>
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                                        <div class="PDF_QT200">
-                                               <textarea name="q_1068187_co_organizer_contact_info" class="small" rows="10" cols="40" title="Please enter the names and email addresses of your &hellip;"></textarea>
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                                 <div class="qContent">
+                                               <div class="qText">
+                                                       Please enter the names and email addresses of your co-organizers here.
+                                               </div>
+
+                                               <div class="PDF_QT200">
+                                                       <textarea name="q_1068187_co_organizer_contact_info" class="small" rows="10" cols="40"
+                                                                         title="Please enter the names and email addresses of your &hellip;"></textarea>
+                                               </div>
</ins><span class="cx" style="display: block; padding: 0 10px">                                         </div>
</span><span class="cx" style="display: block; padding: 0 10px">                                </div>
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                        </div>
</del><span class="cx" style="display: block; padding: 0 10px"> 
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                        <div class="PDF_questionDivide" id="pd-divider-24"></div>
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                         <div class="PDF_questionDivide" id="pd-divider-24"></div>
</ins><span class="cx" style="display: block; padding: 0 10px"> 
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                        <div class="PDF_question" id="pd-question-25">
-                               <div class="qNumber">
-                                       Q.25
-                               </div>
-
-                               <div class="qContent">
-                                       <div class="qText">
-                                               Are you confident you can raise money from local sponsors to cover the event costs?
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                         <div class="PDF_question" id="pd-question-25">
+                                       <div class="qNumber">
+                                               Q.25
</ins><span class="cx" style="display: block; padding: 0 10px">                                         </div>
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                                        <div class="PDF_QT400">
-                                               <ul>
-                                                       <li>
-                                                               <input type="radio" name="q_1068214_raise_money" value="Yes, I'm cool with the fundraising" id="q_1068214_1908711" />
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                                 <div class="qContent">
+                                               <div class="qText">
+                                                       Are you confident you can raise money from local sponsors to cover the event costs?
+                                               </div>
</ins><span class="cx" style="display: block; padding: 0 10px"> 
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                                                                <label for="q_1068214_1908711" value="1908711">
-                                                                       Yes, I'm cool with the fundraising </label>
-                                                       </li>
-                                                       <li>
-                                                               <input type="radio" name="q_1068214_raise_money" value="I'm not sure -- I haven't done this before but I'll do my best" id="q_1068214_1908712" />
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                                         <div class="PDF_QT400">
+                                                       <ul>
+                                                               <li>
+                                                                       <input type="radio" name="q_1068214_raise_money"
+                                                                                  value="Yes, I'm cool with the fundraising" id="q_1068214_1908711"/>
</ins><span class="cx" style="display: block; padding: 0 10px"> 
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                                                                <label for="q_1068214_1908712" value="1908712">
-                                                                       I'm not sure -- I haven't done this before but I'll do my best </label>
-                                                       </li>
-                                                       <li>
-                                                               <input type="radio" name="q_1068214_raise_money" value="Not really, I hate asking people for money" id="q_1068214_1908713" />
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                                                                 <label for="q_1068214_1908711" value="1908711">
+                                                                               Yes, I'm cool with the fundraising </label>
+                                                               </li>
+                                                               <li>
+                                                                       <input type="radio" name="q_1068214_raise_money"
+                                                                                  value="I'm not sure -- I haven't done this before but I'll do my best"
+                                                                                  id="q_1068214_1908712"/>
</ins><span class="cx" style="display: block; padding: 0 10px"> 
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                                                                <label for="q_1068214_1908713" value="1908713">
-                                                                       Not really, I hate asking people for money </label>
-                                                       </li>
-                                               </ul>
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                                                                 <label for="q_1068214_1908712" value="1908712">
+                                                                               I'm not sure -- I haven't done this before but I'll do my best </label>
+                                                               </li>
+                                                               <li>
+                                                                       <input type="radio" name="q_1068214_raise_money"
+                                                                                  value="Not really, I hate asking people for money" id="q_1068214_1908713"/>
+
+                                                                       <label for="q_1068214_1908713" value="1908713">
+                                                                               Not really, I hate asking people for money </label>
+                                                               </li>
+                                                       </ul>
+                                               </div>
</ins><span class="cx" style="display: block; padding: 0 10px">                                         </div>
</span><span class="cx" style="display: block; padding: 0 10px">                                </div>
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                        </div>
</del><span class="cx" style="display: block; padding: 0 10px"> 
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                        <div class="PDF_questionDivide" id="pd-divider-25"></div>
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                         <div class="PDF_questionDivide" id="pd-divider-25"></div>
</ins><span class="cx" style="display: block; padding: 0 10px"> 
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                        <div class="PDF_question" id="pd-question-26">
-                               <div class="qNumber">
-                                       Q.26
-                               </div>
-
-                               <div class="qContent">
-                                       <div class="qText">
-                                               If there are businesses already interested in sponsoring, list them here.
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                         <div class="PDF_question" id="pd-question-26">
+                                       <div class="qNumber">
+                                               Q.26
</ins><span class="cx" style="display: block; padding: 0 10px">                                         </div>
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                                        <div class="PDF_QT100">
-                                               <input value="" maxlength="500" name="q_1068220_interested_sponsors" class="large" type="text" title="If there are businesses already interested in spons&hellip;" />
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                                 <div class="qContent">
+                                               <div class="qText">
+                                                       If there are businesses already interested in sponsoring, list them here.
+                                               </div>
+
+                                               <div class="PDF_QT100">
+                                                       <input value="" maxlength="500" name="q_1068220_interested_sponsors" class="large"
+                                                                  type="text" title="If there are businesses already interested in spons&hellip;"/>
+                                               </div>
</ins><span class="cx" style="display: block; padding: 0 10px">                                         </div>
</span><span class="cx" style="display: block; padding: 0 10px">                                </div>
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                        </div>
</del><span class="cx" style="display: block; padding: 0 10px"> 
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                        <div class="PDF_questionDivide" id="pd-divider-26"></div>
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                         <div class="PDF_questionDivide" id="pd-divider-26"></div>
</ins><span class="cx" style="display: block; padding: 0 10px"> 
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                        <div class="PDF_question" id="pd-question-27">
-                               <div class="qNumber">
-                                       Q.27
-                               </div>
-
-                               <div class="qContent">
-                                       <div class="qText">
-                                               Do you know local people who would make good presenters/speakers?
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                         <div class="PDF_question" id="pd-question-27">
+                                       <div class="qNumber">
+                                               Q.27
</ins><span class="cx" style="display: block; padding: 0 10px">                                         </div>
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                                        <div class="PDF_QT400">
-                                               <ul>
-                                                       <li>
-                                                               <input type="radio" name="q_1046009_good_presenters" value="Yes, I know lots of local WordPress users/developers" id="q_1046009_1865453" />
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                                 <div class="qContent">
+                                               <div class="qText">
+                                                       Do you know local people who would make good presenters/speakers?
+                                               </div>
</ins><span class="cx" style="display: block; padding: 0 10px"> 
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                                                                <label for="q_1046009_1865453" value="1865453">
-                                                                       Yes, I know lots of local WordPress users/developers </label>
-                                                       </li>
-                                                       <li>
-                                                               <input type="radio" name="q_1046009_good_presenters" value="Yes, I know a couple of people who would be qualified" id="q_1046009_1865454" />
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                                         <div class="PDF_QT400">
+                                                       <ul>
+                                                               <li>
+                                                                       <input type="radio" name="q_1046009_good_presenters"
+                                                                                  value="Yes, I know lots of local WordPress users/developers"
+                                                                                  id="q_1046009_1865453"/>
</ins><span class="cx" style="display: block; padding: 0 10px"> 
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                                                                <label for="q_1046009_1865454" value="1865454">
-                                                                       Yes, I know a couple of people who would be qualified </label>
-                                                       </li>
-                                                       <li>
-                                                               <input type="radio" name="q_1046009_good_presenters" value="No, I don't know anyone local who could speak" id="q_1046009_1865455" />
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                                                                 <label for="q_1046009_1865453" value="1865453">
+                                                                               Yes, I know lots of local WordPress users/developers </label>
+                                                               </li>
+                                                               <li>
+                                                                       <input type="radio" name="q_1046009_good_presenters"
+                                                                                  value="Yes, I know a couple of people who would be qualified"
+                                                                                  id="q_1046009_1865454"/>
</ins><span class="cx" style="display: block; padding: 0 10px"> 
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                                                                <label for="q_1046009_1865455" value="1865455">
-                                                                       No, I don't know anyone local who could speak </label>
-                                                       </li>
-                                               </ul>
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                                                                 <label for="q_1046009_1865454" value="1865454">
+                                                                               Yes, I know a couple of people who would be qualified </label>
+                                                               </li>
+                                                               <li>
+                                                                       <input type="radio" name="q_1046009_good_presenters"
+                                                                                  value="No, I don't know anyone local who could speak"
+                                                                                  id="q_1046009_1865455"/>
+
+                                                                       <label for="q_1046009_1865455" value="1865455">
+                                                                               No, I don't know anyone local who could speak </label>
+                                                               </li>
+                                                       </ul>
+                                               </div>
</ins><span class="cx" style="display: block; padding: 0 10px">                                         </div>
</span><span class="cx" style="display: block; padding: 0 10px">                                </div>
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                        </div>
</del><span class="cx" style="display: block; padding: 0 10px"> 
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                        <div class="PDF_questionDivide" id="pd-divider-27"></div>
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                         <div class="PDF_questionDivide" id="pd-divider-27"></div>
</ins><span class="cx" style="display: block; padding: 0 10px"> 
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                        <div class="PDF_question" id="pd-question-28">
-                               <div class="qNumber">
-                                       Q.28
-                               </div>
-
-                               <div class="qContent">
-                                       <div class="qText">
-                                               Please enter the names of the people you have in mind, and describe them in a few words.
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                         <div class="PDF_question" id="pd-question-28">
+                                       <div class="qNumber">
+                                               Q.28
</ins><span class="cx" style="display: block; padding: 0 10px">                                         </div>
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                                        <div class="PDF_QT200">
-                                               <textarea name="q_1046021_presenter_names" class="small" rows="10" cols="40" title="Please enter the names of the people you have in mi&hellip;"></textarea>
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                                 <div class="qContent">
+                                               <div class="qText">
+                                                       Please enter the names of the people you have in mind, and describe them in a few words.
+                                               </div>
+
+                                               <div class="PDF_QT200">
+                                                       <textarea name="q_1046021_presenter_names" class="small" rows="10" cols="40"
+                                                                         title="Please enter the names of the people you have in mi&hellip;"></textarea>
+                                               </div>
</ins><span class="cx" style="display: block; padding: 0 10px">                                         </div>
</span><span class="cx" style="display: block; padding: 0 10px">                                </div>
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                        </div>
</del><span class="cx" style="display: block; padding: 0 10px"> 
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                        <div class="PDF_questionDivide" id="pd-divider-28"></div>
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                         <div class="PDF_questionDivide" id="pd-divider-28"></div>
</ins><span class="cx" style="display: block; padding: 0 10px"> 
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                        <div class="PDF_question" id="pd-question-29">
-                               <div class="qNumber">
-                                       Q.29
-                               </div>
-
-                               <div class="qContent">
-                                       <div class="qText">
-                                               Do you have any connections to potential venue donations (colleges, offices, etc)?
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                         <div class="PDF_question" id="pd-question-29">
+                                       <div class="qNumber">
+                                               Q.29
</ins><span class="cx" style="display: block; padding: 0 10px">                                         </div>
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                                        <div class="PDF_QT400">
-                                               <ul>
-                                                       <li>
-                                                               <input type="radio" name="q_1068197_venue_connections" value="Yes, I've been talking to people already" id="q_1068197_1908695" />
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                                 <div class="qContent">
+                                               <div class="qText">
+                                                       Do you have any connections to potential venue donations (colleges, offices, etc)?
+                                               </div>
</ins><span class="cx" style="display: block; padding: 0 10px"> 
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                                                                <label for="q_1068197_1908695" value="1908695">
-                                                                       Yes, I've been talking to people already </label>
-                                                       </li>
-                                                       <li>
-                                                               <input type="radio" name="q_1068197_venue_connections" value="No, but I have some leads" id="q_1068197_1908696" />
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                                         <div class="PDF_QT400">
+                                                       <ul>
+                                                               <li>
+                                                                       <input type="radio" name="q_1068197_venue_connections"
+                                                                                  value="Yes, I've been talking to people already" id="q_1068197_1908695"/>
</ins><span class="cx" style="display: block; padding: 0 10px"> 
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                                                                <label for="q_1068197_1908696" value="1908696">
-                                                                       No, but I have some leads </label>
-                                                       </li>
-                                                       <li>
-                                                               <input type="radio" name="q_1068197_venue_connections" value="No, I'll be looking for a venue from scratch" id="q_1068197_1908697" />
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                                                                 <label for="q_1068197_1908695" value="1908695">
+                                                                               Yes, I've been talking to people already </label>
+                                                               </li>
+                                                               <li>
+                                                                       <input type="radio" name="q_1068197_venue_connections"
+                                                                                  value="No, but I have some leads" id="q_1068197_1908696"/>
</ins><span class="cx" style="display: block; padding: 0 10px"> 
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                                                                <label for="q_1068197_1908697" value="1908697">
-                                                                       No, I'll be looking for a venue from scratch </label>
-                                                       </li>
-                                               </ul>
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                                                                 <label for="q_1068197_1908696" value="1908696">
+                                                                               No, but I have some leads </label>
+                                                               </li>
+                                                               <li>
+                                                                       <input type="radio" name="q_1068197_venue_connections"
+                                                                                  value="No, I'll be looking for a venue from scratch" id="q_1068197_1908697"/>
+
+                                                                       <label for="q_1068197_1908697" value="1908697">
+                                                                               No, I'll be looking for a venue from scratch </label>
+                                                               </li>
+                                                       </ul>
+                                               </div>
</ins><span class="cx" style="display: block; padding: 0 10px">                                         </div>
</span><span class="cx" style="display: block; padding: 0 10px">                                </div>
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                        </div>
</del><span class="cx" style="display: block; padding: 0 10px"> 
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                        <div class="PDF_questionDivide" id="pd-divider-29"></div>
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                         <div class="PDF_questionDivide" id="pd-divider-29"></div>
</ins><span class="cx" style="display: block; padding: 0 10px"> 
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                        <div class="PDF_question" id="pd-question-30">
-                               <div class="qNumber">
-                                       Q.30
-                               </div>
-
-                               <div class="qContent">
-                                       <div class="qText">
-                                               What possible venues are you considering?
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                         <div class="PDF_question" id="pd-question-30">
+                                       <div class="qNumber">
+                                               Q.30
</ins><span class="cx" style="display: block; padding: 0 10px">                                         </div>
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                                        <div class="PDF_QT200">
-                                               <textarea name="q_1068212_venues_considering" class="small" rows="10" cols="40" title="What possible venues are you considering?"></textarea>
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                                 <div class="qContent">
+                                               <div class="qText">
+                                                       What possible venues are you considering?
+                                               </div>
+
+                                               <div class="PDF_QT200">
+                                                       <textarea name="q_1068212_venues_considering" class="small" rows="10" cols="40"
+                                                                         title="What possible venues are you considering?"></textarea>
+                                               </div>
</ins><span class="cx" style="display: block; padding: 0 10px">                                         </div>
</span><span class="cx" style="display: block; padding: 0 10px">                                </div>
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                        </div>
</del><span class="cx" style="display: block; padding: 0 10px"> 
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                        <div class="PDF_questionDivide" id="pd-divider-30"></div>
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                         <div class="PDF_questionDivide" id="pd-divider-30"></div>
</ins><span class="cx" style="display: block; padding: 0 10px"> 
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                        <div class="PDF_question" id="pd-question-32">
-                               <div class="qNumber">
-                                       Q.32
-                               </div>
-
-                               <div class="qContent">
-                                       <div class="qText">
-                                               Anything else you want us to know while we&#039;re looking over your application?
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                         <div class="PDF_question" id="pd-question-32">
+                                       <div class="qNumber">
+                                               Q.32
</ins><span class="cx" style="display: block; padding: 0 10px">                                         </div>
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                                        <div class="PDF_QT200">
-                                               <textarea name="q_1079098_anything_else" class="large" rows="10" cols="40" title="Anything else you want us to know while we&#039;re looki&hellip;"></textarea>
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                                 <div class="qContent">
+                                               <div class="qText">
+                                                       Anything else you want us to know while we&#039;re looking over your application?
+                                               </div>
+
+                                               <div class="PDF_QT200">
+                                                       <textarea name="q_1079098_anything_else" class="large" rows="10" cols="40"
+                                                                         title="Anything else you want us to know while we&#039;re looki&hellip;"></textarea>
+                                               </div>
</ins><span class="cx" style="display: block; padding: 0 10px">                                         </div>
</span><span class="cx" style="display: block; padding: 0 10px">                                </div>
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                        </div>
</del><span class="cx" style="display: block; padding: 0 10px"> 
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                        <div class="PDF_questionDivide" id="pd-divider-32"></div>
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                         <div class="PDF_questionDivide" id="pd-divider-32"></div>
</ins><span class="cx" style="display: block; padding: 0 10px"> 
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                        <div class="PDF_question" id="pd-question-10003">
-                               <div class="qContent">
-                                       <div class="PDF_QT1900">
-                                               <h2>Bonus Question!</h2>
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                         <div class="PDF_question" id="pd-question-10003">
+                                       <div class="qContent">
+                                               <div class="PDF_QT1900">
+                                                       <h2>Bonus Question!</h2>
+                                               </div>
</ins><span class="cx" style="display: block; padding: 0 10px">                                         </div>
</span><span class="cx" style="display: block; padding: 0 10px">                                </div>
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                        </div>
</del><span class="cx" style="display: block; padding: 0 10px"> 
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                        <div class="PDF_questionDivide" id="pd-divider-10003"></div>
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                         <div class="PDF_questionDivide" id="pd-divider-10003"></div>
</ins><span class="cx" style="display: block; padding: 0 10px"> 
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                        <div class="PDF_question" id="pd-question-33">
-                               <div class="qNumber">
-                                       Q.33
-                               </div>
-
-                               <div class="qContent">
-                                       <div class="qText">
-                                               Which of these best describes you?
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                         <div class="PDF_question" id="pd-question-33">
+                                       <div class="qNumber">
+                                               Q.33
</ins><span class="cx" style="display: block; padding: 0 10px">                                         </div>
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                                        <div class="PDF_QT400">
-                                               <ul>
-                                                       <li>
-                                                               <input type="radio" name="q_1079112_best_describes_you" value="Personal Blogger" id="q_1079112_1926766" />
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                                 <div class="qContent">
+                                               <div class="qText">
+                                                       Which of these best describes you?
+                                               </div>
</ins><span class="cx" style="display: block; padding: 0 10px"> 
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                                                                <label for="q_1079112_1926766" value="1926766">
-                                                                       Personal Blogger </label>
-                                                       </li>
-                                                       <li>
-                                                               <input type="radio" name="q_1079112_best_describes_you" value="Company Blogger" id="q_1079112_1926767" />
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                                         <div class="PDF_QT400">
+                                                       <ul>
+                                                               <li>
+                                                                       <input type="radio" name="q_1079112_best_describes_you" value="Personal Blogger"
+                                                                                  id="q_1079112_1926766"/>
</ins><span class="cx" style="display: block; padding: 0 10px"> 
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                                                                <label for="q_1079112_1926767" value="1926767">
-                                                                       Company Blogger </label>
-                                                       </li>
-                                                       <li>
-                                                               <input type="radio" name="q_1079112_best_describes_you" value="Designer" id="q_1079112_1926768" />
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                                                                 <label for="q_1079112_1926766" value="1926766">
+                                                                               Personal Blogger </label>
+                                                               </li>
+                                                               <li>
+                                                                       <input type="radio" name="q_1079112_best_describes_you" value="Company Blogger"
+                                                                                  id="q_1079112_1926767"/>
</ins><span class="cx" style="display: block; padding: 0 10px"> 
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                                                                <label for="q_1079112_1926768" value="1926768">
-                                                                       Designer </label>
-                                                       </li>
-                                                       <li>
-                                                               <input type="radio" name="q_1079112_best_describes_you" value="Beginning Developer" id="q_1079112_1926769" />
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                                                                 <label for="q_1079112_1926767" value="1926767">
+                                                                               Company Blogger </label>
+                                                               </li>
+                                                               <li>
+                                                                       <input type="radio" name="q_1079112_best_describes_you" value="Designer"
+                                                                                  id="q_1079112_1926768"/>
</ins><span class="cx" style="display: block; padding: 0 10px"> 
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                                                                <label for="q_1079112_1926769" value="1926769">
-                                                                       Beginning Developer </label>
-                                                       </li>
-                                                       <li>
-                                                               <input type="radio" name="q_1079112_best_describes_you" value="Advanced Developer" id="q_1079112_1926770" />
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                                                                 <label for="q_1079112_1926768" value="1926768">
+                                                                               Designer </label>
+                                                               </li>
+                                                               <li>
+                                                                       <input type="radio" name="q_1079112_best_describes_you" value="Beginning Developer"
+                                                                                  id="q_1079112_1926769"/>
</ins><span class="cx" style="display: block; padding: 0 10px"> 
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                                                                <label for="q_1079112_1926770" value="1926770">
-                                                                       Advanced Developer </label>
-                                                       </li>
-                                                       <li>
-                                                               <input type="radio" name="q_1079112_best_describes_you" value="Project Manager" id="q_1079112_1926771" />
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                                                                 <label for="q_1079112_1926769" value="1926769">
+                                                                               Beginning Developer </label>
+                                                               </li>
+                                                               <li>
+                                                                       <input type="radio" name="q_1079112_best_describes_you" value="Advanced Developer"
+                                                                                  id="q_1079112_1926770"/>
</ins><span class="cx" style="display: block; padding: 0 10px"> 
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                                                                <label for="q_1079112_1926771" value="1926771">
-                                                                       Project Manager </label>
-                                                       </li>
-                                                       <li>
-                                                               <input type="radio" name="q_1079112_best_describes_you" value="System Administrator/IT Professional" id="q_1079112_1926772" />
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                                                                 <label for="q_1079112_1926770" value="1926770">
+                                                                               Advanced Developer </label>
+                                                               </li>
+                                                               <li>
+                                                                       <input type="radio" name="q_1079112_best_describes_you" value="Project Manager"
+                                                                                  id="q_1079112_1926771"/>
</ins><span class="cx" style="display: block; padding: 0 10px"> 
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                                                                <label for="q_1079112_1926772" value="1926772">
-                                                                       System Administrator/IT Professional </label>
-                                                       </li>
-                                                       <li>
-                                                               <input type="radio" name="q_1079112_best_describes_you" value="Sales/Marketing/PR" id="q_1079112_1926773" />
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                                                                 <label for="q_1079112_1926771" value="1926771">
+                                                                               Project Manager </label>
+                                                               </li>
+                                                               <li>
+                                                                       <input type="radio" name="q_1079112_best_describes_you"
+                                                                                  value="System Administrator/IT Professional" id="q_1079112_1926772"/>
</ins><span class="cx" style="display: block; padding: 0 10px"> 
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                                                                <label for="q_1079112_1926773" value="1926773">
-                                                                       Sales/Marketing/PR </label>
-                                                       </li>
-                                                       <li>
-                                                               <input type="radio" name="q_1079112_best_describes_you" value="Business Owner" id="q_1079112_1926774" />
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                                                                 <label for="q_1079112_1926772" value="1926772">
+                                                                               System Administrator/IT Professional </label>
+                                                               </li>
+                                                               <li>
+                                                                       <input type="radio" name="q_1079112_best_describes_you" value="Sales/Marketing/PR"
+                                                                                  id="q_1079112_1926773"/>
</ins><span class="cx" style="display: block; padding: 0 10px"> 
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                                                                <label for="q_1079112_1926774" value="1926774">
-                                                                       Business Owner </label>
-                                                       </li>
-                                                       <li>
-                                                               <input type="radio" name="q_1079112_best_describes_you" value="WordPress Fan" id="q_1079112_1926775" />
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                                                                 <label for="q_1079112_1926773" value="1926773">
+                                                                               Sales/Marketing/PR </label>
+                                                               </li>
+                                                               <li>
+                                                                       <input type="radio" name="q_1079112_best_describes_you" value="Business Owner"
+                                                                                  id="q_1079112_1926774"/>
</ins><span class="cx" style="display: block; padding: 0 10px"> 
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                                                                <label for="q_1079112_1926775" value="1926775">
-                                                                       WordPress Fan </label>
-                                                       </li>
-                                                       <li>
-                                                               <input type="radio" name="q_1079112_best_describes_you" id="q_1079112_other" value="other" />
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                                                                 <label for="q_1079112_1926774" value="1926774">
+                                                                               Business Owner </label>
+                                                               </li>
+                                                               <li>
+                                                                       <input type="radio" name="q_1079112_best_describes_you" value="WordPress Fan"
+                                                                                  id="q_1079112_1926775"/>
</ins><span class="cx" style="display: block; padding: 0 10px"> 
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                                                                <label for="q_1079112_other">
-                                                                       Other:
-                                                               </label>
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                                                                 <label for="q_1079112_1926775" value="1926775">
+                                                                               WordPress Fan </label>
+                                                               </li>
+                                                               <li>
+                                                                       <input type="radio" name="q_1079112_best_describes_you" id="q_1079112_other"
+                                                                                  value="other"/>
</ins><span class="cx" style="display: block; padding: 0 10px"> 
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                                                                <input type="text" class="other" name="q_1079112_best_describes_you_other" value="" style="width: 75%" />
-                                                       </li>
-                                               </ul>
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                                                                 <label for="q_1079112_other">
+                                                                               Other:
+                                                                       </label>
+
+                                                                       <input type="text" class="other" name="q_1079112_best_describes_you_other" value=""
+                                                                                  style="width: 75%"/>
+                                                               </li>
+                                                       </ul>
+                                               </div>
</ins><span class="cx" style="display: block; padding: 0 10px">                                         </div>
</span><span class="cx" style="display: block; padding: 0 10px">                                </div>
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                        </div>
</del><span class="cx" style="display: block; padding: 0 10px"> 
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                        <div class="PDF_questionDivide" id="pd-divider-33"></div>
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                         <div class="PDF_questionDivide" id="pd-divider-33"></div>
</ins><span class="cx" style="display: block; padding: 0 10px"> 
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                        <div class="PDF_question">
-                               <div class="button">
-                                       <input type="submit" name="submit-application" value="Submit Application" />
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                         <div class="PDF_question">
+                                       <div class="button">
+                                               <input type="submit" name="submit-application" value="Submit Application"/>
+                                       </div>
</ins><span class="cx" style="display: block; padding: 0 10px">                                 </div>
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                        </div>
</del><span class="cx" style="display: block; padding: 0 10px"> 
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                </div> <!-- PDF.pageInner -->
-       </div> <!-- PDF.pageOuter -->
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                 </div> <!-- PDF.pageInner -->
+               </div> <!-- PDF.pageOuter -->
</ins><span class="cx" style="display: block; padding: 0 10px"> 
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-</form>
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+ </form>
+
+       <?php
+}
</ins><span class="cx" style="display: block; padding: 0 10px">\ No newline at end of file
</span></span></pre></div>
<a id="sitestrunkwordcamporgpublic_htmlwpcontentpluginswcptviewswordcampmetaboxstatusphp"></a>
<div class="modfile"><h4 style="background-color: #eee; color: inherit; margin: 1em 0; padding: 1.3em; font-size: 115%">Modified: sites/trunk/wordcamp.org/public_html/wp-content/plugins/wcpt/views/wordcamp/metabox-status.php</h4>
<pre class="diff"><span>
<span class="info" style="display: block; padding: 0 10px; color: #888">--- sites/trunk/wordcamp.org/public_html/wp-content/plugins/wcpt/views/wordcamp/metabox-status.php    2018-08-13 07:28:19 UTC (rev 7606)
+++ sites/trunk/wordcamp.org/public_html/wp-content/plugins/wcpt/views/wordcamp/metabox-status.php      2018-08-13 11:52:14 UTC (rev 7607)
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -1,22 +1,33 @@
</span><span class="cx" style="display: block; padding: 0 10px"> <?php
</span><span class="cx" style="display: block; padding: 0 10px"> defined( 'WPINC' ) || die();
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-$wcpt = get_post_type_object( WCPT_POST_TYPE_ID );
-?>
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+/**
+ * Renders the status metabox for events. Will display current status of the event. If user has edit_post access then will display dropdown of all available statuses for this post.
+ *
+ * @param Event_Admin $event_admin Event admin object. Must have methods `get_valid_status_transitions` and `get_post_statuses`
+ * @param WP_Post $post Post object
+ * @param string $event_type Type of event. Could be 'wordcamp' or 'wp_meetup'.
+ * @param string $label Label to display. Could be 'WordCamp' or 'Meetup' as of now.
+ * @param string $edit_capability Name of the capability which allows to edit the event
+ */
+function render_event_metabox( $event_admin, $post, $event_type, $label, $edit_capability ) {
+       $wcpt = get_post_type_object( $event_type );
+       ?>
</ins><span class="cx" style="display: block; padding: 0 10px"> 
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-<div id="submitpost" class="wcb submitbox">
-       <div id="minor-publishing">
-               <div id="misc-publishing-actions">
-                       <div class="misc-pub-section misc-pub-post-status">
-                               <label>
-                                       WordCamp Status:
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+ <div id="submitpost" class="wcb submitbox">
+               <div id="minor-publishing">
+                       <div id="misc-publishing-actions">
+                               <div class="misc-pub-section misc-pub-post-status">
+                                       <label>
+                                               <?php echo $label; ?> Status:
</ins><span class="cx" style="display: block; padding: 0 10px"> 
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                                        <?php if ( current_user_can( 'wordcamp_wrangle_wordcamps' ) ) : ?>
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                                         <?php if ( current_user_can( $edit_capability ) ) : ?>
</ins><span class="cx" style="display: block; padding: 0 10px"> 
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                                                <span id="post-status-display">
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                                                 <span id="post-status-display">
</ins><span class="cx" style="display: block; padding: 0 10px">                                                         <select name="post_status">
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                                                                <?php $transitions = WordCamp_Loader::get_valid_status_transitions( $post->post_status ); ?>
-                                                               <?php foreach ( WordCamp_Loader::get_post_statuses() as $key => $label ) : ?>
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                                                         <?php $transitions = $event_admin->get_valid_status_transitions( $post->post_status );
+                                                               ?>
+                                                               <?php foreach ( $event_admin->get_post_statuses() as $key => $label ) : ?>
</ins><span class="cx" style="display: block; padding: 0 10px">                                                                         <?php $status = get_post_status_object( $key ); ?>
</span><span class="cx" style="display: block; padding: 0 10px">                                                                        <option value="<?php echo esc_attr( $status->name ); ?>" <?php
</span><span class="cx" style="display: block; padding: 0 10px">                                                                                if ( $post->post_status == $status->name ) {
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -31,9 +42,9 @@
</span><span class="cx" style="display: block; padding: 0 10px">                                                        </select>
</span><span class="cx" style="display: block; padding: 0 10px">                                                </span>
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                                        <?php else : ?>
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                                         <?php else : ?>
</ins><span class="cx" style="display: block; padding: 0 10px"> 
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                                                <span id="post-status-display">
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                                                 <span id="post-status-display">
</ins><span class="cx" style="display: block; padding: 0 10px">                                                         <?php
</span><span class="cx" style="display: block; padding: 0 10px">                                                                $status = get_post_status_object( $post->post_status );
</span><span class="cx" style="display: block; padding: 0 10px">                                                                echo esc_html( $status->label );
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -40,29 +51,31 @@
</span><span class="cx" style="display: block; padding: 0 10px">                                                        ?>
</span><span class="cx" style="display: block; padding: 0 10px">                                                </span>
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                                        <?php endif; ?>
-                               </label>
-                       </div>
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                                         <?php endif; ?>
+                                       </label>
+                               </div>
+                               <div class="clear"></div>
+                       </div> <!-- #misc-publishing-actions -->
+
</ins><span class="cx" style="display: block; padding: 0 10px">                         <div class="clear"></div>
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                </div> <!-- #misc-publishing-actions -->
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+         </div> <!-- #minor-publishing -->
</ins><span class="cx" style="display: block; padding: 0 10px"> 
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                <div class="clear"></div>
-       </div> <!-- #minor-publishing -->
-       
-       <div id="major-publishing-actions">
-               <div id="delete-action">
-                       <?php if ( current_user_can( $wcpt->cap->delete_post, $post->ID ) ) : ?>
-                               <a class="submitdelete deletion" href="<?php echo get_delete_post_link( $post->ID ); ?>">
-                                       <?php _e( 'Delete', 'wordcamporg' ); ?>
-                               </a>
-                       <?php endif; ?>
-               </div>
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+         <div id="major-publishing-actions">
+                       <div id="delete-action">
+                               <?php if ( current_user_can( $wcpt->cap->delete_post, $post->ID ) ) : ?>
+                                       <a class="submitdelete deletion" href="<?php echo get_delete_post_link( $post->ID ); ?>">
+                                               <?php _e( 'Delete', 'wordcamporg' ); ?>
+                                       </a>
+                               <?php endif; ?>
+                       </div>
</ins><span class="cx" style="display: block; padding: 0 10px"> 
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                <div id="publishing-action">
-                       <?php submit_button( 'Update', 'primary button-large', 'wcpt-update', false, array( 'accesskey' => 'p' ) ); ?>
-               </div>
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                 <div id="publishing-action">
+                               <?php submit_button( 'Update', 'primary button-large', 'wcpt-update', false, array( 'accesskey' => 'p' ) ); ?>
+                       </div>
</ins><span class="cx" style="display: block; padding: 0 10px"> 
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                <div class="clear"></div>
-       </div> <!-- #major-publishing-actions -->
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                 <div class="clear"></div>
+               </div> <!-- #major-publishing-actions -->
</ins><span class="cx" style="display: block; padding: 0 10px"> 
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-</div> <!-- .submitbox -->
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+ </div> <!-- .submitbox -->
+       <?php
+}
</ins><span class="cx" style="display: block; padding: 0 10px">\ No newline at end of file
</span></span></pre></div>
<a id="sitestrunkwordcamporgpublic_htmlwpcontentpluginswcptwcpteventclasseventadminphp"></a>
<div class="addfile"><h4 style="background-color: #eee; color: inherit; margin: 1em 0; padding: 1.3em; font-size: 115%">Added: sites/trunk/wordcamp.org/public_html/wp-content/plugins/wcpt/wcpt-event/class-event-admin.php</h4>
<pre class="diff"><span>
<span class="info" style="display: block; padding: 0 10px; color: #888">--- sites/trunk/wordcamp.org/public_html/wp-content/plugins/wcpt/wcpt-event/class-event-admin.php                             (rev 0)
+++ sites/trunk/wordcamp.org/public_html/wp-content/plugins/wcpt/wcpt-event/class-event-admin.php       2018-08-13 11:52:14 UTC (rev 7607)
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -0,0 +1,575 @@
</span><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+<?php
+/**
+ * Implement Event_Admin class
+ *
+ * @package WordCamp Post Type
+ */
+
+/**
+ * Class Event_Admin
+ *
+ * Abstract class providing common functions for event admins
+ *
+ * @package WordCamp Post Type
+ * @subpackage Admin
+ */
+abstract class Event_Admin {
+
+       /**
+        * Event_Admin constructor.
+        */
+       public function __construct() {
+               add_action( 'add_meta_boxes', array( $this, 'metabox' ) );
+
+               add_action( 'add_meta_boxes', array( $this, 'add_status_metabox' ) );
+
+               add_action( 'add_meta_boxes', array( $this, 'add_log_metabox' ) );
+
+               add_action( 'add_meta_boxes', array( $this, 'add_note_metabox' ) );
+
+               add_action( 'add_meta_boxes', array( $this, 'add_original_application' ) );
+
+               add_action( 'save_post_' . $this->get_event_type(), array( $this, 'metabox_save' ), 10, 2 );
+
+               add_action( 'manage_posts_custom_column', array( $this, 'column_data' ), 10, 2 );
+
+               add_filter( 'post_row_actions', array( $this, 'post_row_actions' ), 10, 2 );
+
+               add_filter(
+                       'manage_' . $this->get_event_type() . '_posts_columns', array(
+                               $this,
+                               'column_headers',
+                       )
+               );
+               // Forum column headers.
+               add_filter( 'display_post_states', array( $this, 'display_post_states' ) );
+
+               add_action( 'admin_enqueue_scripts', array( $this, 'common_admin_scripts' ) );
+
+               add_action( 'admin_print_styles', array( $this, 'common_admin_styles' ) );
+
+               add_action( 'transition_post_status', array( $this, 'log_status_changes' ), 10, 3 );
+       }
+
+       /**
+        * Get all possible valid transitions from given status.
+        *
+        * @param string $status Name of status.
+        *
+        * @return array List of all valid transitions.
+        */
+       abstract public static function get_valid_status_transitions( $status );
+
+       /**
+        * List of all possible status.
+        *
+        * @return array
+        */
+       abstract public static function get_post_statuses();
+
+       /**
+        * Get post type
+        *
+        * @return string
+        */
+       abstract public static function get_event_type();
+
+       /**
+        * Get user facing event label
+        *
+        * @return string
+        */
+       abstract public static function get_event_label();
+
+       /**
+        * Get meta key group
+        *
+        * @param string $meta_group Name of meta group.
+        *
+        * @return array
+        */
+       abstract public static function meta_keys( $meta_group = '' );
+
+       /**
+        * Check if $key is a read-only field
+        *
+        * @param string $key Name of the field.
+        *
+        * @return bool
+        */
+       abstract public static function is_protected_field( $key );
+
+       /**
+        * Add metaboxes to admin view
+        */
+       abstract public function metabox();
+
+       /**
+        * Render column data for a given column
+        *
+        * @param string $column  Name of column.
+        * @param int    $post_id Post ID.
+        */
+       abstract public function column_data( $column, $post_id );
+
+       /**
+        * Change post row actions
+        *
+        * @param array   $actions Array of actions.
+        * @param WP_Post $post    Post object.
+        */
+       abstract public function post_row_actions( $actions, $post );
+
+       /**
+        * Render column headers
+        *
+        * @param array $columns List of columns.
+        */
+       abstract public function column_headers( $columns );
+
+       /**
+        * Add status metabox
+        */
+       public function add_status_metabox() {
+               add_meta_box(
+                       'submitdiv',
+                       __( 'Status', 'wordcamporg' ),
+                       array( $this, 'metabox_status' ),
+                       $this->get_event_type(),
+                       'side',
+                       'high'
+               );
+
+       }
+
+       /**
+        * Add log meta box to application
+        */
+       public function add_log_metabox() {
+               if ( ! current_user_can( $this->get_edit_capability() ) ) {
+                       return;
+               }
+
+               add_meta_box(
+                       'wcpt_log',
+                       'Log',
+                       'wcpt_log_metabox',
+                       $this->get_event_type(),
+                       'advanced',
+                       'low'
+               );
+
+       }
+
+       /**
+        * Add note metabox to application
+        */
+       public function add_note_metabox() {
+               if ( ! current_user_can( $this->get_edit_capability() ) ) {
+                       return;
+               }
+
+               add_meta_box(
+                       'wcpt_notes',
+                       __( 'Add Private Note', 'wordcamporg' ),
+                       'wcpt_add_note_metabox',
+                       $this->get_event_type(),
+                       'side',
+                       'low'
+               );
+       }
+
+       /**
+        * Add original application metabox
+        */
+       public function add_original_application() {
+               if ( ! current_user_can( $this->get_edit_capability() ) ) {
+                       return;
+               }
+
+               add_meta_box(
+                       'wcpt_original_application',
+                       'Original Application',
+                       array( $this, 'original_application_metabox' ),
+                       $this->get_event_type(),
+                       'advanced',
+                       'low'
+               );
+       }
+
+       /**
+        * Render the Original application
+        *
+        * @param WP_Post $post Current post.
+        */
+       public function original_application_metabox( $post ) {
+               $application_data = get_post_meta( $post->ID, '_application_data', true );
+               require_once WCPT_DIR . 'views/wordcamp/metabox-original-application.php';
+       }
+
+       /**
+        * Render the WordCamp status meta box.
+        *
+        * @param WP_Post $post Current post object.
+        */
+       public function metabox_status( $post ) {
+               require_once WCPT_DIR . 'views/wordcamp/metabox-status.php';
+
+               render_event_metabox( $this, $post, $this->get_event_type(), $this->get_event_label(), $this->get_edit_capability() );
+       }
+
+       /**
+        * Gets name of capability required to edit the current event
+        *
+        * @return string
+        */
+       abstract public static function get_edit_capability();
+
+       /**
+        * Log when the post status changes
+        *
+        * @param string  $new_status New status.
+        * @param string  $old_status Old status.
+        * @param WP_Post $post       Current Post.
+        */
+       public function log_status_changes( $new_status, $old_status, $post ) {
+               if ( $new_status === $old_status || 'auto-draft' === $new_status ) {
+                       return;
+               }
+
+               if ( empty( $post->post_type ) || $this->get_event_type() !== $post->post_type ) {
+                       return;
+               }
+
+               $old_status = get_post_status_object( $old_status );
+               $new_status = get_post_status_object( $new_status );
+
+               add_post_meta(
+                       $post->ID, '_status_change', array(
+                               'timestamp' => time(),
+                               'user_id'   => get_current_user_id(),
+                               'message'   => sprintf( '%s &rarr; %s', $old_status->label, $new_status->label ),
+                       )
+               );
+       }
+
+
+       /**
+        * Load common admin side scripts
+        */
+       public function common_admin_scripts() {
+
+               if ( $this->get_event_type() !== get_post_type() ) {
+                       return;
+               }
+
+               wp_register_script(
+                       'wcpt-admin',
+                       WCPT_URL . 'javascript/wcpt-wordcamp/admin.js',
+                       array( 'jquery', 'jquery-ui-datepicker' ),
+                       WCPT_VERSION,
+                       true
+               );
+
+               wp_enqueue_script( 'wcpt-admin' );
+               wp_enqueue_script( 'select2' );
+
+       }
+
+       /**
+        * Load common admin styles
+        */
+       public function common_admin_styles() {
+
+               if ( $this->get_event_type() !== get_post_type() ) {
+                       return;
+               }
+
+               wp_register_style(
+                       'wcpt-admin',
+                       plugins_url( 'css/applications/admin.css', __DIR__ ),
+                       array(),
+                       WCPT_VERSION
+               );
+
+               wp_enqueue_style( 'jquery-ui' );
+               wp_enqueue_style( 'wp-datepicker-skins' );
+               wp_enqueue_style( 'select2' );
+               wp_enqueue_style( 'wcpt-admin' );
+
+       }
+
+       /**
+        * Display the status of a WordCamp post
+        *
+        * @param array $states List of post states.
+        *
+        * @return array
+        */
+       public function display_post_states( $states ) {
+               global $post;
+
+               if ( $post->post_type !== $this->get_event_type() ) {
+                       return $states;
+               }
+
+               $status = get_post_status_object( $post->post_status );
+               if ( get_query_var( 'post_status' ) !== $post->post_status ) {
+                       $states[ $status->name ] = $status->label;
+               }
+
+               return $states;
+       }
+
+       /**
+        * Save metadata from form
+        *
+        * @param int     $post_id Post ID.
+        * @param WP_Post $post    Post Object.
+        */
+       public function metabox_save( $post_id, $post ) {
+               // Don't add/remove meta on revisions and auto-saves.
+               if ( wp_is_post_autosave( $post_id ) || wp_is_post_revision( $post_id ) ) {
+                       return;
+               }
+
+               // Don't add/remove meta on trash, untrash, restore, etc.
+               if ( empty( $_POST['action'] ) || 'editpost' !== $_POST['action'] ) {
+                       return;
+               }
+
+               if ( $this->get_event_type() !== get_post_type() ) {
+                       return;
+               }
+
+               // Make sure the requset came from the edit post screen.
+               if ( empty( $_POST['_wpnonce'] ) || ! wp_verify_nonce( $_POST['_wpnonce'], 'update-post_' . $post_id ) ) {
+                       return;
+               }
+
+               $meta_keys = $this->meta_keys();
+
+               foreach ( $meta_keys as $key => $value ) {
+                       $post_value     = wcpt_key_to_str( $key, 'wcpt_' );
+                       $values[ $key ] = isset( $_POST[ $post_value ] ) ? esc_attr( $_POST[ $post_value ] ) : '';
+
+                       // Don't update protected fields
+                       if ( $this->is_protected_field( $key ) ) {
+                               continue;
+                       }
+
+                       switch ( $value ) {
+                               case 'text':
+                               case 'textarea':
+                                       update_post_meta( $post_id, $key, $values[ $key ] );
+                                       break;
+
+                               case 'number':
+                                       update_post_meta( $post_id, $key, floatval( $values[ $key ] ) );
+                                       break;
+
+                               case 'checkbox':
+                                       if ( ! empty( $values[ $key ] ) && 'on' == $values[ $key ] ) {
+                                               update_post_meta( $post_id, $key, true );
+                                       } else {
+                                               update_post_meta( $post_id, $key, false );
+                                       }
+                                       break;
+
+                               case 'date':
+                                       if ( ! empty( $values[ $key ] ) ) {
+                                               $values[ $key ] = strtotime( $values[ $key ] );
+                                       }
+
+                                       update_post_meta( $post_id, $key, $values[ $key ] );
+                                       break;
+
+                               case 'select-currency':
+                                       $currencies = WordCamp_Budgets::get_currencies();
+                                       $new_value  = ( array_key_exists( $values[ $key ], $currencies ) ) ? $values[ $key ] : '';
+
+                                       update_post_meta( $post_id, $key, $new_value );
+                                       break;
+
+                               default:
+                                       do_action( 'wcpt_metabox_save', $key, $value, $post_id );
+                                       break;
+                       }
+               }
+
+               do_action( 'wcpt_metabox_save_done', $post_id );
+
+               $this->validate_and_add_note( $post_id );
+
+       }
+
+       /**
+        * Validate and add a new private note
+        *
+        * @param int $post_id
+        */
+       protected function validate_and_add_note( $post_id ) {
+               if ( empty( $_POST['wcpt_new_note'] ) ) {
+                       return;
+               }
+
+               check_admin_referer( 'wcpt_notes', 'wcpt_notes_nonce' );
+
+               $new_note_message = sanitize_text_field( wp_unslash( $_POST['wcpt_new_note'] ) );
+
+               if ( empty( $new_note_message ) ) {
+                       return;
+               }
+
+               // Note that this is private, see wcpt_get_log_entries()
+               add_post_meta(
+                       $post_id, '_note', array(
+                               'timestamp' => time(),
+                               'user_id'   => get_current_user_id(),
+                               'message'   => $new_note_message,
+                       )
+               );
+       }
+
+       /**
+        * Displays meta boxes in admin view.
+        *
+        * @param array $required_fields Required fields.
+        * @param array $meta_keys List of meta keys.
+        * @param array $messages List of messages to displayed by a key.
+        * @param int   $post_id ID of post.
+        * @param array $protected_fields List of read only fields.
+        */
+       public static function display_meta_boxes(
+               $required_fields,
+               $meta_keys,
+               $messages,
+               $post_id,
+               $protected_fields
+       ) {
+
+               foreach ( $meta_keys as $key => $value ) :
+                       $object_name = wcpt_key_to_str( $key, 'wcpt_' );
+                       $readonly    = in_array( $key, $protected_fields ) ? ' readonly="readonly"' : '';
+                       ?>
+
+                       <div class="inside">
+                               <?php if ( 'checkbox' == $value ) : ?>
+
+                                       <p>
+                                               <strong><?php echo $key; ?></strong>:
+                                               <input type="checkbox" name="<?php echo $object_name; ?>"
+                                                          id="<?php echo $object_name; ?>" <?php checked( get_post_meta( $post_id, $key, true ) ); ?><?php echo $readonly; ?> />
+                                       </p>
+
+                               <?php else : ?>
+
+                                       <p>
+                                               <strong><?php echo $key; ?></strong>
+                                               <?php if ( in_array( $key, $required_fields, true ) ) : ?>
+                                                       <span class="description"><?php _e( '(required)', 'wordcamporg' ); ?></span>
+                                               <?php endif; ?>
+                                       </p>
+
+                                       <p>
+                                               <label class="screen-reader-text"
+                                                          for="<?php echo $object_name; ?>"><?php echo $key; ?></label>
+
+                                               <?php
+                                               switch ( $value ) :
+                                                       case 'text':
+                                                               ?>
+
+                                                               <input type="text" size="36" name="<?php echo $object_name; ?>"
+                                                                          id="<?php echo $object_name; ?>"
+                                                                          value="<?php echo esc_attr( get_post_meta( $post_id, $key, true ) ); ?>"<?php echo $readonly; ?> />
+
+                                                               <?php
+                                                               break;
+                                                       case 'number':
+                                                               ?>
+
+                                                               <input type="number" size="16" name="<?php echo $object_name; ?>"
+                                                                          id="<?php echo $object_name; ?>"
+                                                                          value="<?php echo esc_attr( get_post_meta( $post_id, $key, true ) ); ?>"
+                                                                          step="any" min="0"<?php echo $readonly; ?> />
+
+                                                               <?php
+                                                               break;
+                                                       case 'date':
+                                                               // Quick filter on dates
+                                                               if ( $date = get_post_meta( $post_id, $key, true ) ) {
+                                                                       $date = date( 'Y-m-d', $date );
+                                                               }
+
+                                                               ?>
+
+                                                               <input type="text" size="36" class="date-field" name="<?php echo $object_name; ?>"
+                                                                          id="<?php echo $object_name; ?>"
+                                                                          value="<?php echo $date; ?>"<?php echo $readonly; ?> />
+
+                                                               <?php
+                                                               break;
+                                                       case 'textarea':
+                                                               ?>
+
+                                                               <textarea rows="4" cols="23" name="<?php echo $object_name; ?>"
+                                                                                 id="<?php echo $object_name; ?>"<?php echo $readonly; ?>><?php echo esc_attr( get_post_meta( $post_id, $key, true ) ); ?></textarea>
+
+                                                               <?php
+                                                               break;
+                                                       case 'select-currency':
+                                                               $currencies = WordCamp_Budgets::get_currencies();
+                                                               ?>
+
+                                                               <?php
+                                                               if ( $readonly ) :
+                                                                       $value = get_post_meta( $post_id, $key, true );
+                                                                       ?>
+                                                               <select name="<?php echo $object_name; ?>"
+                                                                               id="<?php echo $object_name; ?>"<?php echo $readonly; ?>>
+                                                                       <option value="<?php echo esc_attr( $value ); ?>" selected>
+                                                                               <?php echo ( $value ) ? esc_html( $currencies[ $value ] . ' (' . $value . ')' ) : ''; ?>
+                                                                       </option>
+                                                               </select>
+                                                       <?php else : ?>
+                                                               <select name="<?php echo esc_attr( $object_name ); ?>"
+                                                                               id="<?php echo esc_attr( $object_name ); ?>" class="select-currency">
+                                                                       <?php foreach ( $currencies as $symbol => $name ) : ?>
+                                                                               <option value="<?php echo esc_attr( $symbol ); ?>"<?php selected( $symbol, get_post_meta( $post_id, $key, true ) ); ?>>
+                                                                                       <?php echo ( $symbol ) ? esc_html( $name . ' (' . $symbol . ')' ) : ''; ?>
+                                                                               </option>
+                                                                       <?php endforeach; ?>
+                                                               </select>
+                                                       <?php endif; ?>
+
+                                                               <?php
+                                                               break;
+
+                                                       default:
+                                                               do_action( 'wcpt_metabox_value', $key, $value, $object_name );
+                                                               break;
+
+                                               endswitch;
+                                               ?>
+
+                                               <?php if ( ! empty( $messages[ $key ] ) ) : ?>
+                                                       <?php
+                                                       if ( 'textarea' == $value ) {
+                                                               echo '<br />';
+                                                       }
+                                                       ?>
+
+                                                       <span class="description"><?php echo esc_html( $messages[ $key ] ); ?></span>
+                                               <?php endif; ?>
+                                       </p>
+
+                               <?php endif; ?>
+                       </div>
+
+                       <?php
+               endforeach;
+       }
+
+
+}
</ins><span class="cx" style="display: block; padding: 0 10px">Property changes on: sites/trunk/wordcamp.org/public_html/wp-content/plugins/wcpt/wcpt-event/class-event-admin.php
</span><span class="cx" style="display: block; padding: 0 10px">___________________________________________________________________
</span></span></pre></div>
<a id="svneolstyle"></a>
<div class="addfile"><h4 style="background-color: #eee; color: inherit; margin: 1em 0; padding: 1.3em; font-size: 115%">Added: svn:eol-style</h4></div>
<ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+native
</ins><span class="cx" style="display: block; padding: 0 10px">\ No newline at end of property
</span><a id="sitestrunkwordcamporgpublic_htmlwpcontentpluginswcptwcpteventclasseventapplicationphp"></a>
<div class="addfile"><h4 style="background-color: #eee; color: inherit; margin: 1em 0; padding: 1.3em; font-size: 115%">Added: sites/trunk/wordcamp.org/public_html/wp-content/plugins/wcpt/wcpt-event/class-event-application.php</h4>
<pre class="diff"><span>
<span class="info" style="display: block; padding: 0 10px; color: #888">--- sites/trunk/wordcamp.org/public_html/wp-content/plugins/wcpt/wcpt-event/class-event-application.php                               (rev 0)
+++ sites/trunk/wordcamp.org/public_html/wp-content/plugins/wcpt/wcpt-event/class-event-application.php 2018-08-13 11:52:14 UTC (rev 7607)
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -0,0 +1,204 @@
</span><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+<?php
+/**
+ * Implement abstract class for Event_Application
+ *
+ * @package WordCamp Post Type
+ */
+
+namespace WordPress_Community\Applications;
+
+/**
+ * Class Event_Application
+ * Provides interface for event application
+ *
+ * @package WordPress_Community\Applications
+ */
+abstract class Event_Application {
+
+       /**
+        * Get user facing string of event type.
+        *
+        * @return string
+        */
+       abstract public static function get_event_label();
+
+       /**
+        * Get post type.
+        *
+        * @return string
+        */
+       abstract public static function get_event_type();
+
+       /**
+        * Common assets used by all event types.
+        */
+       public function enqueue_common_assets() {
+               wp_register_style(
+                       'wp-community-applications',
+                       plugins_url( 'css/applications/common.css', __DIR__ ),
+                       array(),
+                       1
+               );
+
+               wp_enqueue_style( 'wp-community-applications' );
+       }
+
+       /**
+        * Render the output the of the [meetup-organizer-application] shortcode.
+        *
+        * @todo Use force_login_to_view_form() and populate_form_based_on_user().
+        *
+        * @return string
+        */
+       public function render_application_shortcode() {
+               ob_start();
+
+               if ( isset( $_POST['submit-application'] ) ) {
+                       $this->submit_application();
+               } else {
+                       $countries = wcorg_get_countries();
+                       $this->render_application_form( $countries );
+               }
+
+               return ob_get_clean();
+       }
+
+       /**
+        * Render event application from for organizer.
+        *
+        * @param array $countries List of countries.
+        *
+        * @return null
+        */
+       abstract public function render_application_form( $countries );
+
+       /**
+        * Submit application details. Calls `create_post` to actually create the event.
+        */
+       public function submit_application() {
+               $application_data = $this->validate_data( $_POST );
+               if ( $this->is_rate_limited() ) {
+                       $message        = __( 'You have submitted too many applications recently. Please wait and try again in a few hours.', 'wordcamporg' );
+                       $notice_classes = 'notice-error';
+               } elseif ( is_wp_error( $application_data ) ) {
+                       $message        = $application_data->get_error_message();
+                       $notice_classes = 'notice-error';
+               } else {
+                       $this->create_post( $application_data );
+                       $this->notify_applicant_application_received( $this->get_organizer_email(), $this->get_event_location() );
+                       $message        = __( "Thank you for your application! We've received it, and we'll contact you once we've had a chance to review it.", 'wordcamporg' );
+                       $notice_classes = 'notice-success';
+               }
+
+               $this->display_notice( $message, $notice_classes );
+       }
+
+       /**
+        * Validate application data. Returns either error object or data.
+        *
+        * @param array $unsafe_data
+        *
+        * @return array|\WP_Error
+        */
+       abstract public function validate_data( $unsafe_data );
+
+       /**
+        * Create and insert post into DB
+        *
+        * @param array $application_data
+        *
+        * @return bool
+        */
+       abstract public function create_post( $application_data );
+
+
+       /**
+        * Check if the application submitter has been rate limited
+        *
+        * This isn't really designed to protect against DDoS or anything sophisticated; it just prevents us from having
+        * to clean up thousands of fake applications when security researchers use bots to probe for vulnerabilities.
+        *
+        * @return bool
+        */
+       public function is_rate_limited() {
+               $limit = 3;
+
+               $previous_entries = get_posts(
+                       array(
+                               'post_type'      => $this->get_event_type(),
+                               'post_status'    => get_post_stati(), // This will include trashed posts, unlike 'any'.
+                               'posts_per_page' => $limit,
+                               'orderby'        => 'date',
+                               'order'          => 'DESC',
+                               'fields'         => 'ids',
+
+                               'date_query'     => array(
+                                       array(
+                                               'column'    => 'post_date',
+                                               'after'     => '1 hour ago',
+                                               'inclusive' => true,
+                                       ),
+                               ),
+
+                               'meta_query'     => array(
+                                       array(
+                                               'key'   => '_application_submitter_ip_address',
+                                               'value' => $_SERVER['REMOTE_ADDR'],
+                                       ),
+                               ),
+                       )
+               );
+
+               return count( $previous_entries ) >= $limit;
+       }
+
+       /**
+        * Get email of organizer if set
+        *
+        * @return string|null
+        */
+       abstract public function get_organizer_email();
+
+       /**
+        * Get location of event if set.
+        *
+        * @return string|null
+        */
+       abstract public function get_event_location();
+
+       /**
+        * Display a notice to applicant while submitting the form.
+        *
+        * @param string $message Message to be displayed.
+        * @param string $notice_classes Space separated list of classes to be applied to message div.
+        */
+       public function display_notice( $message, $notice_classes ) {
+               ?>
+               <div class="notice notice-large <?php echo esc_attr( $notice_classes ); ?>">
+                       <?php echo esc_html( $message ); ?>
+               </div>
+               <?php
+       }
+
+       /**
+        * Notify the applicant that we've received their application
+        *
+        * @param string $email_address
+        * @param string $meetup_city
+        */
+       public function notify_applicant_application_received( $email_address, $meetup_city ) {
+               //translators: Name of the event. Egs WordCamp.
+               $subject = sprintf( __( "We've received your %s application", 'wpct' ), $this->get_event_label() );
+               $headers = array( 'Reply-To: support@wordcamp.org' );
+               //translators: Name and city of the event. Egs WordCamp in New York.
+               $message = sprintf(
+                       __(
+                               "Thank you for applying to organize a %s in %s! We'll send you a follow-up e-mail once we've had a chance to review your application.",
+                               'wpct'
+                       ),
+                       $this->get_event_label(), sanitize_text_field( $meetup_city )
+               );
+
+               wp_mail( $email_address, $subject, $message, $headers );
+       }
+}
</ins><span class="cx" style="display: block; padding: 0 10px">Property changes on: sites/trunk/wordcamp.org/public_html/wp-content/plugins/wcpt/wcpt-event/class-event-application.php
</span><span class="cx" style="display: block; padding: 0 10px">___________________________________________________________________
</span></span></pre></div>
<a id="svneolstyle"></a>
<div class="addfile"><h4 style="background-color: #eee; color: inherit; margin: 1em 0; padding: 1.3em; font-size: 115%">Added: svn:eol-style</h4></div>
<ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+native
</ins><span class="cx" style="display: block; padding: 0 10px">\ No newline at end of property
</span><a id="sitestrunkwordcamporgpublic_htmlwpcontentpluginswcptwcpteventclasseventloaderphp"></a>
<div class="addfile"><h4 style="background-color: #eee; color: inherit; margin: 1em 0; padding: 1.3em; font-size: 115%">Added: sites/trunk/wordcamp.org/public_html/wp-content/plugins/wcpt/wcpt-event/class-event-loader.php</h4>
<pre class="diff"><span>
<span class="info" style="display: block; padding: 0 10px; color: #888">--- sites/trunk/wordcamp.org/public_html/wp-content/plugins/wcpt/wcpt-event/class-event-loader.php                            (rev 0)
+++ sites/trunk/wordcamp.org/public_html/wp-content/plugins/wcpt/wcpt-event/class-event-loader.php      2018-08-13 11:52:14 UTC (rev 7607)
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -0,0 +1,111 @@
</span><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+<?php
+/**
+ * Implements Event_Loader class
+ *
+ * @package WordCamp Post Type
+ */
+
+/**
+ * Class Event_Loader
+ */
+abstract class Event_Loader {
+
+       /**
+        * Event_Loader constructor. Add common hooks.
+        */
+       public function __construct() {
+               add_action( 'plugins_loaded', array( $this, 'includes' ) );
+               add_action( 'init', array( $this, 'register_post_types' ) );
+               add_action( 'init', array( $this, 'register_post_capabilities' ) );
+               add_action( 'init', array( $this, 'register_post_statuses' ) );
+               add_filter( 'pre_get_posts', array( $this, 'query_public_statuses_on_archives' ) );
+       }
+
+       /**
+        * Include all event specific dependent files.
+        *
+        * @return void
+        */
+       abstract protected function includes();
+
+       /**
+        * Register event custom post type.
+        *
+        * @return void
+        */
+       abstract protected function register_post_types();
+
+       /**
+        * Add capabilities to roles for post type.
+        *
+        * @return void
+        */
+       abstract protected function register_post_capabilities();
+
+       /**
+        * Return list of available post statuses with their labels.
+        *
+        * @return array
+        */
+       abstract public static function get_post_statuses();
+
+       /**
+        * Register post statuses for this event type.
+        */
+       public function register_post_statuses() {
+               foreach ( $this->get_post_statuses() as $key => $label ) {
+                       register_post_status(
+                               $key, array(
+                                       'label'       => $label,
+                                       'public'      => true,
+                                       'label_count' => _nx_noop(
+                                               sprintf( '%s <span class="count">(%s)</span>', $label, '%s' ),
+                                               sprintf( '%s <span class="count">(%s)</span>', $label, '%s' ),
+                                               'wordcamporg'
+                                       ),
+                               )
+                       );
+               }
+       }
+
+       /**
+        * List of statuses when an Event can be tracked in any public facing widget.
+        *
+        * @return array
+        */
+       abstract public static function get_public_post_statuses();
+
+       /**
+        * Only query the public post statuses on WordCamp archives and feeds
+        *
+        * By default, any public post statuses are queried when the `post_status` parameter is not explicitly passed
+        * to WP_Query. This causes central.wordcamp.org/wordcamps/ and central.wordcamp.org/wordcamps/feed/ to display
+        * camps that are `needs-vetting`, etc, which is not desired.
+        *
+        * Another way to fix this would have been to register some of the posts statuses as `private`, but they're not
+        * consistently used in a public or private way, so that would have had more side effects.
+        *
+        * @param WP_Query $query
+        */
+       public function query_public_statuses_on_archives( $query ) {
+               if ( ! $query->is_post_type_archive( WCPT_POST_TYPE_ID ) ) {
+                       return;
+               }
+
+               if ( is_admin() ) {
+                       return;
+               }
+
+               // Sort by the date it was added to the schedule. See WordCamp_Loader::set_scheduled_date() for details.
+               if ( '' === $query->get( 'orderby' ) ) {
+                       $query->set( 'orderby', 'menu_order date' );
+               }
+
+               if ( ! empty( $query->query_vars['post_status'] ) ) {
+                       return;
+               }
+
+               $query->query_vars['post_status'] = $this->get_public_post_statuses();
+       }
+
+}
</ins><span class="cx" style="display: block; padding: 0 10px">Property changes on: sites/trunk/wordcamp.org/public_html/wp-content/plugins/wcpt/wcpt-event/class-event-loader.php
</span><span class="cx" style="display: block; padding: 0 10px">___________________________________________________________________
</span></span></pre></div>
<a id="svneolstyle"></a>
<div class="addfile"><h4 style="background-color: #eee; color: inherit; margin: 1em 0; padding: 1.3em; font-size: 115%">Added: svn:eol-style</h4></div>
<ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+native
</ins><span class="cx" style="display: block; padding: 0 10px">\ No newline at end of property
</span><a id="sitestrunkwordcamporgpublic_htmlwpcontentpluginswcptwcpteventtrackerphp"></a>
<div class="addfile"><h4 style="background-color: #eee; color: inherit; margin: 1em 0; padding: 1.3em; font-size: 115%">Added: sites/trunk/wordcamp.org/public_html/wp-content/plugins/wcpt/wcpt-event/tracker.php</h4>
<pre class="diff"><span>
<span class="info" style="display: block; padding: 0 10px; color: #888">--- sites/trunk/wordcamp.org/public_html/wp-content/plugins/wcpt/wcpt-event/tracker.php                               (rev 0)
+++ sites/trunk/wordcamp.org/public_html/wp-content/plugins/wcpt/wcpt-event/tracker.php 2018-08-13 11:52:14 UTC (rev 7607)
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -0,0 +1,137 @@
</span><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+<?php
+
+namespace WordPress_Community\Applications\Tracker;
+
+use \WordCamp_Loader;
+defined( 'WPINC' ) or die();
+
+const SHORTCODE_SLUG = 'application-tracker';
+
+add_shortcode( SHORTCODE_SLUG, __NAMESPACE__ . '\render_status_shortcode' );
+add_action( 'wp_enqueue_scripts', __NAMESPACE__ . '\enqueue_scripts' );
+
+/**
+ * Render the [application-tracker] shortcode.
+ */
+function render_status_shortcode() {
+       return '<div id="wpc-application-tracker">Loading Application Tracker...</div>';
+}
+
+/**
+ * Get camps that are active enough to be shown on the tracker
+ *
+ * @return array
+ */
+function get_active_wordcamps() {
+       $wordcamps          = array();
+       $statuses           = WordCamp_Loader::get_post_statuses();
+       $milestones         = WordCamp_Loader::map_statuses_to_milestones();
+       $inactive_timestamp = strtotime( '60 days ago' );
+
+       $shown_statuses = $statuses;
+       unset( $shown_statuses[ WCPT_FINAL_STATUS ] );
+       $shown_statuses = array_keys( $shown_statuses );
+
+       $raw_posts = get_posts(
+               array(
+                       'post_type'      => WCPT_POST_TYPE_ID,
+                       'post_status'    => $shown_statuses,
+                       'posts_per_page' => 300,
+                       'order'          => 'ASC',
+                       'orderby'        => 'post_title',
+               )
+       );
+
+       foreach ( $raw_posts as $key => $post ) {
+               $last_update_timestamp = get_last_update_timestamp( $post->ID );
+
+               if ( $last_update_timestamp <= $inactive_timestamp ) {
+                       continue;
+               }
+
+               $wordcamps[] = array(
+                       'city'       => $post->post_title,
+                       'cityUrl'    => filter_var( get_post_meta( $post->ID, 'URL', true ), FILTER_VALIDATE_URL ),
+                       'applicant'  => get_post_meta( $post->ID, 'Organizer Name', true ),
+                       'milestone'  => $milestones[ $post->post_status ],
+                       'status'     => $statuses[ $post->post_status ],
+                       'lastUpdate' => human_time_diff( time(), $last_update_timestamp ) . ' ago',
+               );
+       }
+
+       return $wordcamps;
+}
+
+/**
+ * Get the timestamp of the last time the post status changed
+ *
+ * @param int $post_id
+ *
+ * @return int
+ */
+function get_last_update_timestamp( $post_id ) {
+       $last_update_timestamp = 0;
+       $status_changes        = get_post_meta( $post_id, '_status_change' );
+
+       if ( $status_changes ) {
+               usort( $status_changes, 'wcpt_sort_log_entries' );
+               $last_update_timestamp = $status_changes[0]['timestamp'];
+       }
+
+       return $last_update_timestamp;
+}
+
+/**
+ * Enqueue scripts and styles
+ */
+function enqueue_scripts() {
+       global $post;
+
+       wp_register_script(
+               'wpc-application-tracker',
+               plugins_url( 'javascript/tracker/build/applications.min.js', dirname( __FILE__ ) ), // this file was renamed from 'tracker', which was getting flagged by ad blockers
+               array(),
+               1,
+               true
+       );
+
+       wp_register_style(
+               'wpc-application-tracker',
+               plugins_url( 'javascript/tracker/build/applications.min.css', dirname( __FILE__ ) ), // this file was renamed from 'tracker', which was getting flagged by ad blockers
+               array( 'dashicons', 'list-tables' ),
+               1
+       );
+
+       if ( ! is_a( $post, 'WP_POST' ) || ! has_shortcode( $post->post_content, SHORTCODE_SLUG ) ) {
+               return;
+       }
+
+       wp_enqueue_script( 'wpc-application-tracker' );
+
+       wp_localize_script(
+               'wpc-application-tracker',
+               'wpcApplicationTracker',
+               array(
+                       'applications'     => get_active_wordcamps(),
+                       'displayColumns'   => get_display_columns(),
+                       'initialSortField' => 'city',
+               )
+       );
+
+       wp_enqueue_style( 'wpc-application-tracker' );
+}
+
+/**
+ * Get the columns headers
+ *
+ * @return array
+ */
+function get_display_columns() {
+       return array(
+               'city'       => 'City',
+               'applicant'  => 'Applicant',
+               'milestone'  => 'Milestone',
+               'status'     => 'Status',
+               'lastUpdate' => 'Updated',
+       );
+}
</ins><span class="cx" style="display: block; padding: 0 10px">Property changes on: sites/trunk/wordcamp.org/public_html/wp-content/plugins/wcpt/wcpt-event/tracker.php
</span><span class="cx" style="display: block; padding: 0 10px">___________________________________________________________________
</span></span></pre></div>
<a id="svneolstyle"></a>
<div class="addfile"><h4 style="background-color: #eee; color: inherit; margin: 1em 0; padding: 1.3em; font-size: 115%">Added: svn:eol-style</h4></div>
<ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+native
</ins><span class="cx" style="display: block; padding: 0 10px">\ No newline at end of property
</span><a id="sitestrunkwordcamporgpublic_htmlwpcontentpluginswcptwcptfunctionsphp"></a>
<div class="modfile"><h4 style="background-color: #eee; color: inherit; margin: 1em 0; padding: 1.3em; font-size: 115%">Modified: sites/trunk/wordcamp.org/public_html/wp-content/plugins/wcpt/wcpt-functions.php</h4>
<pre class="diff"><span>
<span class="info" style="display: block; padding: 0 10px; color: #888">--- sites/trunk/wordcamp.org/public_html/wp-content/plugins/wcpt/wcpt-functions.php   2018-08-13 07:28:19 UTC (rev 7606)
+++ sites/trunk/wordcamp.org/public_html/wp-content/plugins/wcpt/wcpt-functions.php     2018-08-13 11:52:14 UTC (rev 7607)
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -71,11 +71,11 @@
</span><span class="cx" style="display: block; padding: 0 10px"> /**
</span><span class="cx" style="display: block; padding: 0 10px">  * Get all the the entries
</span><span class="cx" style="display: block; padding: 0 10px">  *
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">- * @param int $wordcamp_id
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+ * @param int $event_id
</ins><span class="cx" style="display: block; padding: 0 10px">  *
</span><span class="cx" style="display: block; padding: 0 10px">  * @return array
</span><span class="cx" style="display: block; padding: 0 10px">  */
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-function wcpt_get_log_entries( $wordcamp_id ) {
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+function wcpt_get_log_entries( $event_id ) {
</ins><span class="cx" style="display: block; padding: 0 10px">         /*
</span><span class="cx" style="display: block; padding: 0 10px">         * @todo Rename `_note` meta fields to `_private_note` to make it obvious to devs that the value should be
</span><span class="cx" style="display: block; padding: 0 10px">         * treated as private. The `get_post_metadata` filter can be used to support back-compat w/out having to
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -82,8 +82,8 @@
</span><span class="cx" style="display: block; padding: 0 10px">         * rename old entries in database.
</span><span class="cx" style="display: block; padding: 0 10px">         */
</span><span class="cx" style="display: block; padding: 0 10px">        $entries        = array();
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-        $private_notes  = get_post_meta( $wordcamp_id, '_note'          );
-       $status_changes = get_post_meta( $wordcamp_id, '_status_change' );
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+ $private_notes  = get_post_meta( $event_id, '_note'          );
+       $status_changes = get_post_meta( $event_id, '_status_change' );
</ins><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">        foreach ( array( 'note' => $private_notes, 'status_change' => $status_changes ) as $entry_type => $raw_entries ) {
</span><span class="cx" style="display: block; padding: 0 10px">                foreach ( $raw_entries as $entry ) {
</span></span></pre></div>
<a id="sitestrunkwordcamporgpublic_htmlwpcontentpluginswcptwcptloaderphp"></a>
<div class="modfile"><h4 style="background-color: #eee; color: inherit; margin: 1em 0; padding: 1.3em; font-size: 115%">Modified: sites/trunk/wordcamp.org/public_html/wp-content/plugins/wcpt/wcpt-loader.php</h4>
<pre class="diff"><span>
<span class="info" style="display: block; padding: 0 10px; color: #888">--- sites/trunk/wordcamp.org/public_html/wp-content/plugins/wcpt/wcpt-loader.php      2018-08-13 07:28:19 UTC (rev 7606)
+++ sites/trunk/wordcamp.org/public_html/wp-content/plugins/wcpt/wcpt-loader.php        2018-08-13 11:52:14 UTC (rev 7607)
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -45,9 +45,11 @@
</span><span class="cx" style="display: block; padding: 0 10px">                // Load the files
</span><span class="cx" style="display: block; padding: 0 10px">                require_once ( WCPT_DIR . 'wcpt-functions.php' );
</span><span class="cx" style="display: block; padding: 0 10px">                require_once ( WCPT_DIR . 'wcpt-wordcamp/wordcamp-loader.php' );
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                require_once ( WCPT_DIR . 'applications/common.php' );
-               require_once ( WCPT_DIR . 'applications/tracker.php' );
-               require_once ( WCPT_DIR . 'applications/wordcamp.php' );
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+         require_once ( WCPT_DIR . 'wcpt-meetup/meetup-loader.php' );
+               require_once ( WCPT_DIR . 'wcpt-event/tracker.php' );
+               require_once ( WCPT_DIR . 'wcpt-wordcamp/wordcamp.php' );
+               require_once ( WCPT_DIR . 'wcpt-meetup/meetup.php' );
+               require_once ( WCPT_DIR . 'wcpt-meetup/class-meetup-admin.php' );
</ins><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">                // Require admin files.
</span><span class="cx" style="display: block; padding: 0 10px">                if ( is_admin() || ( defined( 'DOING_CRON' ) && DOING_CRON ) ) {
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -67,6 +69,7 @@
</span><span class="cx" style="display: block; padding: 0 10px">                // Create admin
</span><span class="cx" style="display: block; padding: 0 10px">                $GLOBALS['wcpt_admin'] = new WCPT_Admin;
</span><span class="cx" style="display: block; padding: 0 10px">                $GLOBALS['wordcamp_admin'] = new WordCamp_Admin;
</span><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                $GLOBALS['meetup_admin'] = new Meetup_Admin();
</ins><span class="cx" style="display: block; padding: 0 10px">         }
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">        /**
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -87,3 +90,4 @@
</span><span class="cx" style="display: block; padding: 0 10px"> // Load everything up
</span><span class="cx" style="display: block; padding: 0 10px"> $wcpt_loader     = new WCPT_Loader;
</span><span class="cx" style="display: block; padding: 0 10px"> $wordcamp_loader = new WordCamp_Loader;
</span><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+$meetup_loader = new Meetup_Loader();
</ins></span></pre></div>
<a id="sitestrunkwordcamporgpublic_htmlwpcontentpluginswcptwcptmeetupclassmeetupadminphp"></a>
<div class="addfile"><h4 style="background-color: #eee; color: inherit; margin: 1em 0; padding: 1.3em; font-size: 115%">Added: sites/trunk/wordcamp.org/public_html/wp-content/plugins/wcpt/wcpt-meetup/class-meetup-admin.php</h4>
<pre class="diff"><span>
<span class="info" style="display: block; padding: 0 10px; color: #888">--- sites/trunk/wordcamp.org/public_html/wp-content/plugins/wcpt/wcpt-meetup/class-meetup-admin.php                           (rev 0)
+++ sites/trunk/wordcamp.org/public_html/wp-content/plugins/wcpt/wcpt-meetup/class-meetup-admin.php     2018-08-13 11:52:14 UTC (rev 7607)
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -0,0 +1,340 @@
</span><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+<?php
+/**
+ * Implement Meetup Admin class
+ *
+ * @package WordCamp Post Type
+ */
+
+use \WordPress_Community\Applications\Meetup_Application;
+
+require_once WCPT_DIR . 'wcpt-event/class-event-admin.php';
+
+if ( ! class_exists( 'MeetupAdmin' ) ) :
+
+       /**
+        * Implements Meetup Admin class
+        */
+       class Meetup_Admin extends Event_Admin {
+
+               /**
+                * Return user facing label of event type.
+                *
+                * @return string
+                */
+               public static function get_event_label() {
+                       return Meetup_Application::get_event_label();
+               }
+
+               /**
+                * Get post type of event
+                *
+                * @return string
+                */
+               public static function get_event_type() {
+                       return Meetup_Application::get_event_type();
+               }
+
+               /**
+                * TODO: Add valid transition statuses.
+                *
+                * @param string $status Current status of the meetup.
+                *
+                * @return array Valid status transitions.
+                */
+               public static function get_valid_status_transitions( $status ) {
+                       return array_keys( Meetup_Application::get_post_statuses() );
+               }
+
+               /**
+                * List of all valid post statuses for Meetup event
+                *
+                * @return array
+                */
+               public static function get_post_statuses() {
+                       return Meetup_Application::get_post_statuses();
+               }
+
+               /**
+                * Name of capability required to edit the event
+                *
+                * @return string
+                */
+               public static function get_edit_capability() {
+                       return 'can_wrangle_meetup';
+               }
+
+               /**
+                * Columns to display in admin list view
+                *
+                * @param array $columns
+                *
+                * @return array
+                */
+               public function column_headers( $columns ) {
+                       $columns = array(
+                               'cb'             => '<input type="checkbox" />',
+                               'title'          => __( 'Title', 'wcpt' ),
+                               'swag_needed'    => __( 'Swag Needed', 'wcpt' ),
+                               'organizer'      => __( 'Organizer', 'wcpt' ),
+                               'date'           => __( 'Date', 'wcpt' ),
+                               'meetup.com_url' => __( 'Meetup URL', 'wcpt' ),
+                               'helpscout_url'  => __( 'HelpScout Link', 'wcpt' ),
+                       );
+
+                       return $columns;
+               }
+
+               /**
+                * TODO: Implement
+                *
+                * @param string $key Name of the field.
+                *
+                * @return bool Whether `$key` is a protected field.
+                */
+               public static function is_protected_field( $key ) {
+                       return false;
+               }
+
+               /**
+                * Get rendered column data.
+                *
+                * @param string $column Name of the column.
+                * @param int    $post_id
+                */
+               public function column_data( $column, $post_id ) {
+                       if ( empty( $_GET['post_type'] ) || $_GET['post_type'] !== $this->get_event_type() ) {
+                               return;
+                       }
+
+                       switch ( $column ) {
+                               case 'organizer':
+                                       echo esc_html( get_post_meta( $post_id, 'Organizer Name', true ) . '<' . get_post_meta( $post_id, 'Email Address', true ) . '>' );
+                                       break;
+                               case 'meetup.com_url':
+                                       $this->print_clickable_link( get_post_meta( $post_id, 'Meetup URL', true ) );
+                                       break;
+                               case 'helpscout_url':
+                                       $this->print_clickable_link( get_post_meta( $post_id, 'HelpScout link', true ) );
+                                       break;
+                               case 'swag_needed':
+                                       if ( get_post_meta( $post_id, 'Needs swag', true ) ) {
+                                               echo "<span class='dashicons dashicons-star-filled swag-needed-icon'></span>";
+                                       }
+                                       break;
+                       }
+               }
+
+               /**
+                * Helper function to wrap link HTML around a url.
+                *
+                * @param string $link
+                */
+               protected function print_clickable_link( $link ) {
+                       ?>
+               <a href="<?php echo esc_attr( $link ); ?>" target="_blank">
+                       <?php echo esc_html( $link ); ?>
+               </a>
+                       <?php
+               }
+
+               /**
+                * TODO: Remove quickedit action.
+                *
+                * @param $actions
+                * @param $post
+                *
+                * @return mixed
+                */
+               public function post_row_actions( $actions, $post ) {
+                       return $actions;
+               }
+
+               /**
+                * Add metaboxes for meetup events.
+                */
+               public function metabox() {
+
+                       add_meta_box(
+                               'wcpt_meetup_meetup_information',
+                               __( 'Meetup Information', 'wcpt' ),
+                               array( $this, 'wcpt_meetup_information_metabox' ),
+                               Meetup_Application::POST_TYPE,
+                               'advanced'
+                       );
+
+                       add_meta_box(
+                               'wcpt_meetup_application',
+                               __( 'Application Information', 'wcpt' ),
+                               array( $this, 'wcpt_application_metabox' ),
+                               Meetup_Application::POST_TYPE,
+                               'advanced'
+                       );
+
+                       add_meta_box(
+                               'wcpt_meetup_organizer_info',
+                               __( 'Organizer Information', 'wcpt' ),
+                               array( $this, 'wcpt_organizer_info_metabox' ),
+                               Meetup_Application::POST_TYPE,
+                               'advanced'
+                       );
+
+                       add_meta_box(
+                               'wcpt_meetup_swag',
+                               __( 'Swag Information', 'wcpt' ),
+                               array( $this, 'wcpt_swag_metabox' ),
+                               Meetup_Application::POST_TYPE,
+                               'advanced'
+                       );
+
+                       if ( current_user_can( 'wcpt_wrangle_meetups' ) ) {
+                               add_meta_box(
+                                       'wcpt_meetup_notes',
+                                       __( 'Add Private Note', 'wcpt' ),
+                                       array( $this, 'wcpt_notes_metabox' ),
+                                       Meetup_Application::POST_TYPE,
+                                       'advanced'
+                               );
+
+                               add_meta_box(
+                                       'wcpt_meetup_logs',
+                                       __( 'Logs', 'wcpt' ),
+                                       array( $this, 'wcpt_logs_metabox' ),
+                                       Meetup_Application::POST_TYPE,
+                                       'advanced'
+                               );
+
+                       }
+               }
+
+               /**
+                * Render information metabox group.
+                */
+               public function wcpt_meetup_information_metabox() {
+                       $meta_keys = $this->meta_keys( 'information' );
+                       $this->meetup_metabox( $meta_keys );
+               }
+
+               /**
+                * Render application metabox group.
+                */
+               public function wcpt_application_metabox() {
+                       $meta_keys = $this->meta_keys( 'application' );
+                       $this->meetup_metabox( $meta_keys );
+               }
+
+               /**
+                * Render organizer metabox group.
+                */
+               public function wcpt_organizer_info_metabox() {
+                       $meta_keys = $this->meta_keys( 'organizer' );
+                       $this->meetup_metabox( $meta_keys );
+               }
+
+               /**
+                * Render swag metabox group.
+                */
+               public function wcpt_swag_metabox() {
+                       $meta_keys = $this->meta_keys( 'swag' );
+                       $this->meetup_metabox( $meta_keys );
+               }
+
+               /**
+                * Render notes metabox group.
+                */
+               public function wcpt_notes_metabox() {
+                       $meta_keys = $this->meta_keys( 'notes' );
+                       $this->meetup_metabox( $meta_keys );
+               }
+
+               /**
+                * Render logs metabox groups.
+                */
+               public function wcpt_logs_metabox() {
+                       $meta_keys = $this->meta_keys( 'logs' );
+                       $this->meetup_metabox( $meta_keys );
+               }
+
+               /**
+                * Display metaboxes for the keys provided in the argument.
+                *
+                * @param array $meta_keys
+                */
+               public function meetup_metabox( $meta_keys ) {
+                       global $post_id;
+
+                       self::display_meta_boxes( array(), $meta_keys, array(), $post_id, array() );
+               }
+
+               /**
+                * Meta keys group for Meetup Event.
+                *
+                * @param string $meta_group
+                *
+                * @return array
+                */
+               public static function meta_keys( $meta_group = '' ) {
+
+                       $info_keys = array(
+                               'Meetup URL'     => 'text',
+                               'HelpScout link' => 'text',
+                               'City'           => 'text',
+                               'State'          => 'text',
+                               'Country'        => 'text',
+                               'Zip'            => 'text',
+                       );
+
+                       $application_keys = array(
+                               'Date Applied'         => 'date',
+                               'Date of Last Contact' => 'date',
+                               'Who contacted'        => 'text',
+                               'Vetted Date'          => 'date',
+                               'Vetted by'            => 'text',
+                               'Orientation Date'     => 'date',
+                               'Oriented by'          => 'text',
+                               'Joined chapter date'  => 'date',
+                               'Joined chapter by'    => 'text',
+                       );
+
+                       $organizer_keys = array(
+                               'Organizer Name'                           => 'text',
+                               'Email'                                    => 'text',
+                               'Primary organizer WordPress.org username' => 'text',
+                               'Co-Organizers usernames (seperated by comma)' => 'text',
+                               'Date closed'                              => 'date',
+                               'Skype/Slack'                              => 'text',
+                               'Region'                                   => 'text',
+                               'Address'                                  => 'textarea',
+                       );
+
+                       $swag_keys = array(
+                               'Needs swag' => 'checkbox',
+                               'Swag notes' => 'text',
+                       );
+
+                       switch ( $meta_group ) {
+                               case 'information':
+                                       $data = $info_keys;
+                                       break;
+                               case 'application':
+                                       $data = $application_keys;
+                                       break;
+                               case 'organizer':
+                                       $data = $organizer_keys;
+                                       break;
+                               case 'swag':
+                                       $data = $swag_keys;
+                                       break;
+                               case 'all':
+                               default:
+                                       $data = array_merge(
+                                               $info_keys,
+                                               $application_keys,
+                                               $organizer_keys,
+                                               $swag_keys
+                                       );
+                       }
+                       return $data;
+               }
+       }
+
+endif;
</ins><span class="cx" style="display: block; padding: 0 10px">Property changes on: sites/trunk/wordcamp.org/public_html/wp-content/plugins/wcpt/wcpt-meetup/class-meetup-admin.php
</span><span class="cx" style="display: block; padding: 0 10px">___________________________________________________________________
</span></span></pre></div>
<a id="svneolstyle"></a>
<div class="addfile"><h4 style="background-color: #eee; color: inherit; margin: 1em 0; padding: 1.3em; font-size: 115%">Added: svn:eol-style</h4></div>
<ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+native
</ins><span class="cx" style="display: block; padding: 0 10px">\ No newline at end of property
</span><a id="sitestrunkwordcamporgpublic_htmlwpcontentpluginswcptwcptmeetupclassmeetupapplicationphp"></a>
<div class="addfile"><h4 style="background-color: #eee; color: inherit; margin: 1em 0; padding: 1.3em; font-size: 115%">Added: sites/trunk/wordcamp.org/public_html/wp-content/plugins/wcpt/wcpt-meetup/class-meetup-application.php</h4>
<pre class="diff"><span>
<span class="info" style="display: block; padding: 0 10px; color: #888">--- sites/trunk/wordcamp.org/public_html/wp-content/plugins/wcpt/wcpt-meetup/class-meetup-application.php                             (rev 0)
+++ sites/trunk/wordcamp.org/public_html/wp-content/plugins/wcpt/wcpt-meetup/class-meetup-application.php       2018-08-13 11:52:14 UTC (rev 7607)
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -0,0 +1,277 @@
</span><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+<?php
+/**
+ * Implements meetup application class
+ *
+ * @package WordCamp Post Type
+ */
+
+namespace WordPress_Community\Applications;
+use function WordPress_Community\Applications\Meetup\render_meetup_application_form;
+
+require_once dirname( __DIR__ ) . '/wcpt-event/class-event-application.php';
+
+/**
+ * Class Meetup_Application
+ *
+ * @package WordPress_Community\Applications
+ */
+class Meetup_Application extends Event_Application {
+
+       /**
+        * Used to maintain state across functions. Set in create_post function.
+        *
+        * @var \WP_Post
+        */
+       public $post;
+
+       const SHORTCODE_SLUG = 'meetup-organizer-application';
+
+       const POST_TYPE = 'wp_meetup';
+
+       /**
+        * User facing string of event type.
+        *
+        * @return string
+        */
+       public static function get_event_label() {
+               return __( 'Meetup', 'wordcamporg' );
+       }
+
+       /**
+        * Get the post type.
+        *
+        * @return string
+        */
+       public static function get_event_type() {
+               return self::POST_TYPE;
+       }
+
+       /**
+        * Get MeetUp post statuses
+        *
+        * @return array
+        */
+       public static function get_post_statuses() {
+               return array(
+                       'wcpt-mtp-nds-vet'   => _x( 'Needs Vetting', 'Meetup status', 'wordcamporg' ),
+                       'wcpt-mtp-more-info' => _x( 'More Info Requested', 'Meetup status', 'wordcamporg' ),
+                       'wcpt-mtp-nds-ori'   => _x( 'Needs Orientation/Interview', 'Meetup status', 'wordcamporg' ),
+                       'wcpt-mtp-nds-sit'   => _x( 'Needs Site', 'Meetup status', 'wordcamporg' ),
+                       'wcpt-mtp-nds-trn'   => _x( 'Needs Transfer', 'Meetup status', 'wordcamporg' ),
+                       'wcpt-mtp-nds-nw-ow' => _x( 'Needs to assign new owner', 'Meetup status', 'wordcamporg' ),
+                       'wcpt-mtp-chng-req'  => _x( 'Changes requested', 'Meetup status', 'wordcamporg' ),
+                       'wcpt-mtp-nds-swag'  => _x( 'Needs Swag', 'Meetup status', 'wordcamporg' ),
+                       'wcpt-mtp-rejected'  => _x( 'Declined', 'Meetup status', 'wordcamporg' ),
+                       'wcpt-mtp-active'    => _x( 'Active', 'Meetup status', 'wordcamporg' ),
+                       'wcpt-mtp-dormant'   => _x( 'Dormant', 'Meetup status', 'wordcamporg' ),
+                       'wcpt-mtp-removed'   => _x( 'Removed', 'Meetup status', 'wordcamporg' ),
+               );
+       }
+
+       /**
+        * Public statuses for meetup. Meetup having these statuses will be rendered in the tracking widget.
+        *
+        * @return array
+        */
+       public static function get_public_post_statuses() {
+               return array( 'wcpt-mtp-nds-swag', 'wcpt-mtp-active', 'wcpt-mtp-dormant' );
+       }
+
+       /**
+        * Enqueue scripts and stylesheets.
+        */
+       function enqueue_assets() {
+               global $post;
+
+               wp_register_script(
+                       'meetup-application',
+                       plugins_url( 'javascript/applications/meetup.js', __DIR__ ),    // todo won't need this?
+                       array( 'jquery' ),
+                       1,
+                       true
+               );
+
+               wp_register_style(
+                       'meetup-application',
+                       plugins_url( 'css/applications/meetup.css', __DIR__ ),    // todo need this?
+                       array( 'wp-community-applications' ),
+                       1
+               );
+
+               if ( isset( $post->post_content ) && has_shortcode( $post->post_content, self::SHORTCODE_SLUG ) ) {
+                       wp_enqueue_script( 'meetup-application' );
+                       wp_enqueue_style( 'meetup-application' );
+               }
+       }
+
+       /**
+        * Render application form
+        *
+        * @param array $countries
+        *
+        * @return null|void
+        */
+       public function render_application_form( $countries ) {
+               require_once dirname( __DIR__ ) . '/views/applications/meetup/shortcode-application.php';
+               render_meetup_application_form( $countries );
+       }
+
+       /**
+        * Validate the submitted application data
+        *
+        * @param array $unsafe_data
+        *
+        * @return array|\WP_Error
+        */
+       public function validate_data( $unsafe_data ) {
+               $safe_data   = array();
+               $unsafe_data = shortcode_atts( $this->get_default_application_values(), $unsafe_data );
+
+               $required_fields = array(
+                       'q_first_name',
+                       'q_last_name',
+                       'q_email',
+                       'q_city',
+                       'q_state',
+                       'q_country',
+                       'q_zip',
+                       'q_already_a_meetup',
+                       'q_describe_yourself',
+                       'q_wporg_username',
+               );
+
+               foreach ( $unsafe_data as $key => $value ) {
+                       if ( is_array( $value ) ) {
+                               $safe_data[ $key ] = array_map( 'sanitize_text_field', $value );
+                       } else {
+                               $safe_data[ $key ] = sanitize_text_field( $value );
+                       }
+               }
+
+               foreach ( $required_fields as $field ) {
+                       if ( empty( $safe_data[ $field ] ) ) {
+                               return new \WP_Error( 'required_fields', "Please click on your browser's Back button, and fill in all of the required fields." );
+                       }
+               }
+
+               return $safe_data;
+       }
+
+       /**
+        * Get the default values for all application fields
+        *
+        * @return array
+        */
+       public function get_default_application_values() {
+               // WordCamp uses an ID with questions. Not sure how are they used. Ask @corey
+               $values = array(
+                       'q_first_name'          => '',
+                       'q_last_name'           => '',
+                       'q_email'               => '',
+                       'q_city'                => '',
+                       'q_state'               => '',
+                       'q_country'             => '',
+                       'q_zip'                 => '',
+                       'q_already_a_meetup'    => '',
+                       'q_existing_meetup_url' => '',
+                       'q_describe_yourself'   => '',
+                       'q_wporg_username'      => '',
+                       'q_wp_slack_username'   => '',
+               );
+
+               return $values;
+       }
+
+       /**
+        * Create a meetup post from an application
+        *
+        * @param array $data
+        *
+        * @return bool|\WP_Error
+        */
+       public function create_post( $data ) {
+               // Create the post.
+               $user     = wcorg_get_user_by_canonical_names( $data['q_wporg_username'] );
+               $statuses = self::get_post_statuses();
+
+               $post = array(
+                       'post_type'   => self::get_event_type(),
+                       'post_title'  => $data['q_city'] . ', ' . $data['q_country'],
+                       'post_status' => self::get_default_status(),
+                       'post_author' => is_a( $user, 'WP_User' ) ? $user->ID : 0,
+               );
+
+               $post_id = wp_insert_post( $post, true );
+
+               if ( is_wp_error( $post_id ) ) {
+                       return $post_id;
+               }
+
+               // Populate the meta fields.
+               add_post_meta( $post_id, '_application_data', $data );
+
+               add_post_meta(
+                       $post_id, 'Organizer Name', sprintf(
+                               '%s %s',
+                               $data['q_first_name'],
+                               $data['q_last_name']
+                       )
+               );
+
+               add_post_meta( $post_id, 'Email Address', $data['q_email'] );
+               add_post_meta( $post_id, 'City', $data['q_city'] );
+               add_post_meta( $post_id, 'State', $data['q_state'] );
+               add_post_meta( $post_id, 'Country', $data['q_country'] );
+               add_post_meta( $post_id, 'Zip', $data['q_zip'] );
+               add_post_meta( $post_id, 'Already a meetup', $data['q_already_a_meetup'] );
+               add_post_meta( $post_id, 'Existing meetup URL', $data['q_existing_meetup_url'] );
+               add_post_meta( $post_id, 'Best describe organizer', $data['q_describe_yourself'] );
+               add_post_meta( $post_id, 'WordPress.org username', $data['q_wporg_username'] );
+               add_post_meta( $post_id, 'WordPress slack username', $data['q_wp_slack_username'] );
+               add_post_meta( $post_id, 'Date Applied', gmdate( 'Y-m-d\TH:i:s\Z' ) );
+
+               add_post_meta(
+                       $post_id, '_status_change', array(
+                               'timestamp' => time(),
+                               'user_id'   => is_a( $user, 'WP_User' ) ? $user->ID : 0,
+                               'message'   => sprintf( '%s &rarr; %s', 'Application', $statuses[ self::get_default_status() ] ),
+                       )
+               );
+
+               $this->post = get_post( $post_id );
+
+               return true;
+       }
+
+       /**
+        * Get the default status.
+        *
+        * @return string
+        */
+       public static function get_default_status() {
+               return 'wcpt-mtp-nds-vet';
+       }
+
+       /**
+        * Get organizer email if set
+        *
+        * @return null|string
+        */
+       public function get_organizer_email() {
+               if ( isset( $this->post ) && isset( $this->post->ID ) ) {
+                       return get_post_meta( $this->post->ID, 'q_email' );
+               }
+       }
+
+       /**
+        * Get meetup location if set
+        *
+        * @return null|string
+        */
+       public function get_event_location() {
+               if ( isset( $this->post ) && isset( $this->post->ID ) ) {
+                       return get_post_meta( $this->post->ID, 'q_city' );
+               }
+       }
+
+}
</ins><span class="cx" style="display: block; padding: 0 10px">Property changes on: sites/trunk/wordcamp.org/public_html/wp-content/plugins/wcpt/wcpt-meetup/class-meetup-application.php
</span><span class="cx" style="display: block; padding: 0 10px">___________________________________________________________________
</span></span></pre></div>
<a id="svneolstyle"></a>
<div class="addfile"><h4 style="background-color: #eee; color: inherit; margin: 1em 0; padding: 1.3em; font-size: 115%">Added: svn:eol-style</h4></div>
<ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+native
</ins><span class="cx" style="display: block; padding: 0 10px">\ No newline at end of property
</span><a id="sitestrunkwordcamporgpublic_htmlwpcontentpluginswcptwcptmeetupmeetuploaderphp"></a>
<div class="addfile"><h4 style="background-color: #eee; color: inherit; margin: 1em 0; padding: 1.3em; font-size: 115%">Added: sites/trunk/wordcamp.org/public_html/wp-content/plugins/wcpt/wcpt-meetup/meetup-loader.php</h4>
<pre class="diff"><span>
<span class="info" style="display: block; padding: 0 10px; color: #888">--- sites/trunk/wordcamp.org/public_html/wp-content/plugins/wcpt/wcpt-meetup/meetup-loader.php                                (rev 0)
+++ sites/trunk/wordcamp.org/public_html/wp-content/plugins/wcpt/wcpt-meetup/meetup-loader.php  2018-08-13 11:52:14 UTC (rev 7607)
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -0,0 +1,120 @@
</span><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+<?php
+/**
+ * Implements Meetup_Loader
+ *
+ * @package WordCamp Post Type
+ */
+
+use WordPress_Community\Applications\Meetup_Application;
+define( 'WCPT_MEETUP_SLUG', 'wp_meetup' );
+
+
+if ( ! class_exists( 'Meetup_Loader' ) ) :
+
+       /**
+        * Class Meetup_Loader
+        */
+       class Meetup_Loader extends Event_Loader {
+
+
+               /**
+                * Include files specific for meetup event
+                */
+               public function includes() {
+               }
+
+               /**
+                * Register meetup custom post type
+                */
+               public function register_post_types() {
+                       // Meetup post type labels
+                       $wcpt_labels = array(
+                               'name'               => __( 'Meetups', 'wordcamporg' ),
+                               'singular_name'      => __( 'Meetup', 'wordcamporg' ),
+                               'add_new'            => __( 'Add New', 'wordcamporg' ),
+                               'add_new_item'       => __( 'Create New Meetup', 'wordcamporg' ),
+                               'edit'               => __( 'Edit', 'wordcamporg' ),
+                               'edit_item'          => __( 'Edit Meetup', 'wordcamporg' ),
+                               'new_item'           => __( 'New Meetup', 'wordcamporg' ),
+                               'view'               => __( 'View Meetup', 'wordcamporg' ),
+                               'view_item'          => __( 'View Meetup', 'wordcamporg' ),
+                               'search_items'       => __( 'Search Meetup', 'wordcamporg' ),
+                               'not_found'          => __( 'No Meetup found', 'wordcamporg' ),
+                               'not_found_in_trash' => __( 'No Meetup found in Trash', 'wordcamporg' ),
+                               'parent_item_colon'  => __( 'Parent Meetup:', 'wordcamporg' ),
+                       );
+
+                       // Meetup post type rewrite
+                       // TODO: Is this necessary?
+                       $wcpt_rewrite = array(
+                               'slug'       => WCPT_MEETUP_SLUG,
+                               'with_front' => false,
+                       );
+
+                       $wcpt_supports = array(
+                               'title',
+                               'editor',
+                               'thumbnail',
+                               'revisions',
+                               'author',
+                       );
+
+                       // Register WordCamp post type
+                       register_post_type(
+                               Meetup_Application::POST_TYPE, array(
+                                       'labels'          => $wcpt_labels,
+                                       'rewrite'         => $wcpt_rewrite,
+                                       'supports'        => $wcpt_supports,
+                                       'menu_position'   => '100',
+                                       'public'          => true,
+                                       'show_ui'         => true,
+                                       'can_export'      => true,
+                                       'capability_type' => Meetup_Application::POST_TYPE,
+                                       'map_meta_cap'    => true,
+                                       'hierarchical'    => false,
+                                       'has_archive'     => true,
+                                       'query_var'       => true,
+                                       'menu_icon'       => 'dashicons-wordpress',
+                                       'show_in_rest'    => true,
+                                       'rest_base'       => 'meetups',
+                               )
+                       );
+               }
+
+               /**
+                * Allow some site roles to see WordCamp posts.
+                */
+               public function register_post_capabilities() {
+                       $roles = array(
+                               'contributor',
+                               'author',
+                               'editor',
+                               'administrator',
+                       );
+
+                       foreach ( $roles as $role ) {
+                               get_role( $role )->add_cap( 'edit_' . Meetup_Application::POST_TYPE . 's' );
+                       }
+               }
+
+               /**
+                * Get available post statuses
+                *
+                * @return array
+                */
+               public static function get_post_statuses() {
+                       return Meetup_Application::get_post_statuses();
+               }
+
+               /**
+                * Get public post statuses
+                *
+                * @return array
+                */
+               public static function get_public_post_statuses() {
+                       return Meetup_Application::get_public_post_statuses();
+               }
+
+       }
+
+endif;
</ins><span class="cx" style="display: block; padding: 0 10px">Property changes on: sites/trunk/wordcamp.org/public_html/wp-content/plugins/wcpt/wcpt-meetup/meetup-loader.php
</span><span class="cx" style="display: block; padding: 0 10px">___________________________________________________________________
</span></span></pre></div>
<a id="svneolstyle"></a>
<div class="addfile"><h4 style="background-color: #eee; color: inherit; margin: 1em 0; padding: 1.3em; font-size: 115%">Added: svn:eol-style</h4></div>
<ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+native
</ins><span class="cx" style="display: block; padding: 0 10px">\ No newline at end of property
</span><a id="sitestrunkwordcamporgpublic_htmlwpcontentpluginswcptwcptmeetupmeetupphp"></a>
<div class="addfile"><h4 style="background-color: #eee; color: inherit; margin: 1em 0; padding: 1.3em; font-size: 115%">Added: sites/trunk/wordcamp.org/public_html/wp-content/plugins/wcpt/wcpt-meetup/meetup.php</h4>
<pre class="diff"><span>
<span class="info" style="display: block; padding: 0 10px; color: #888">--- sites/trunk/wordcamp.org/public_html/wp-content/plugins/wcpt/wcpt-meetup/meetup.php                               (rev 0)
+++ sites/trunk/wordcamp.org/public_html/wp-content/plugins/wcpt/wcpt-meetup/meetup.php 2018-08-13 11:52:14 UTC (rev 7607)
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -0,0 +1,21 @@
</span><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+<?php
+
+namespace WordPress_Community\Applications\Meetup;
+
+require_once 'class-meetup-application.php';
+use WordPress_Community\Applications\Meetup_Application;
+
+defined( 'WPINC' ) or die();
+
+/*
+ * todo
+ * grant access to regular deputies to vet meetups
+ * also do that for wordcamps, so prob use same system
+       maybe just create array for regular deupties like the ones we have for super deputies , but it doesn't requier proxy access?
+ */
+
+$meetup_application = new Meetup_Application();
+
+add_shortcode( $meetup_application::SHORTCODE_SLUG, array( $meetup_application, 'render_application_shortcode' ) );
+
+add_action( 'wp_enqueue_scripts', array( $meetup_application, 'enqueue_assets' ), 11 );
</ins><span class="cx" style="display: block; padding: 0 10px">Property changes on: sites/trunk/wordcamp.org/public_html/wp-content/plugins/wcpt/wcpt-meetup/meetup.php
</span><span class="cx" style="display: block; padding: 0 10px">___________________________________________________________________
</span></span></pre></div>
<a id="svneolstyle"></a>
<div class="addfile"><h4 style="background-color: #eee; color: inherit; margin: 1em 0; padding: 1.3em; font-size: 115%">Added: svn:eol-style</h4></div>
<ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+native
</ins><span class="cx" style="display: block; padding: 0 10px">\ No newline at end of property
</span><a id="sitestrunkwordcamporgpublic_htmlwpcontentpluginswcptwcptwordcampclasswordcampapplicationphp"></a>
<div class="addfile"><h4 style="background-color: #eee; color: inherit; margin: 1em 0; padding: 1.3em; font-size: 115%">Added: sites/trunk/wordcamp.org/public_html/wp-content/plugins/wcpt/wcpt-wordcamp/class-wordcamp-application.php</h4>
<pre class="diff"><span>
<span class="info" style="display: block; padding: 0 10px; color: #888">--- sites/trunk/wordcamp.org/public_html/wp-content/plugins/wcpt/wcpt-wordcamp/class-wordcamp-application.php                         (rev 0)
+++ sites/trunk/wordcamp.org/public_html/wp-content/plugins/wcpt/wcpt-wordcamp/class-wordcamp-application.php   2018-08-13 11:52:14 UTC (rev 7607)
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -0,0 +1,256 @@
</span><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+<?php
+
+namespace WordPress_Community\Applications;
+
+use function WordPress_Community\Applications\WordCamp\render_wordcamp_application_form;
+
+require_once dirname( __DIR__ ) . '/wcpt-event/class-event-application.php';
+require_once dirname( __DIR__ ) . '/views/applications/wordcamp/shortcode-application.php';
+
+class WordCamp_Application extends Event_Application {
+
+       public $post;
+
+       const SHORTCODE_SLUG = 'wordcamp-organizer-application';
+
+       static function get_event_label() {
+               __( 'WordCamp', 'wordcamporg' );
+       }
+
+       /**
+        * Gets the post type
+        *
+        * @return string
+        */
+       static function get_event_type() {
+               return WCPT_POST_TYPE_ID;
+       }
+
+       /**
+        * Enqueue scripts and stylesheets
+        */
+       function enqueue_assets() {
+               global $post;
+
+               wp_register_script(
+                       'wordcamp-application',
+                       plugins_url( 'javascript/applications/wordcamp.js', __DIR__ ),
+                       array( 'jquery' ),
+                       1,
+                       true
+               );
+
+               wp_register_style(
+                       'wordcamp-application',
+                       plugins_url( 'css/applications/wordcamp.css', __DIR__ ),
+                       array( 'wp-community-applications' ),
+                       1
+               );
+
+               if ( isset( $post->post_content ) && has_shortcode( $post->post_content, self::SHORTCODE_SLUG ) ) {
+                       wp_enqueue_script( 'wordcamp-application' );
+                       wp_enqueue_style( 'wordcamp-application' );
+               }
+       }
+
+       /**
+        * Render application form
+        *
+        * @param array $countries
+        *
+        * @return null|void
+        */
+       function render_application_form( $countries ) {
+               render_wordcamp_application_form( $countries );
+       }
+
+       /**
+        * Validate the submitted application data
+        *
+        * @param array $unsafe_data
+        *
+        * @return array|\WP_Error
+        */
+       function validate_data( $unsafe_data ) {
+               $safe_data   = array();
+               $unsafe_data = shortcode_atts( $this->get_default_application_values(), $unsafe_data );
+
+               $required_fields = array(
+                       'q_1079074_first_name',
+                       'q_1079074_last_name',
+                       'q_1079059_email',
+                       'q_4236565_wporg_username',
+                       'q_1079103_wordcamp_location',
+               );
+
+               foreach ( $unsafe_data as $key => $value ) {
+                       if ( is_array( $value ) ) {
+                               $safe_data[ $key ] = array_map( 'sanitize_text_field', $value );
+                       } else {
+                               $safe_data[ $key ] = sanitize_text_field( $value );
+                       }
+               }
+
+               foreach ( $required_fields as $field ) {
+                       if ( empty( $safe_data[ $field ] ) ) {
+                               return new \WP_Error( 'required_fields', "Please click on your browser's Back button, and fill in all of the required fields." );
+                       }
+               }
+
+               return $safe_data;
+       }
+
+       /**
+        * Get the default values for all application fields
+        *
+        * @return array
+        */
+       function get_default_application_values() {
+               $values = array(
+                       // Part 1
+                       'q_1079074_first_name'                       => '',
+                       'q_1079074_last_name'                        => '',
+                       'q_1079059_email'                            => '',
+                       'q_1079060_add1'                             => '',
+                       'q_1079060_add2'                             => '',
+                       'q_1079060_city'                             => '',
+                       'q_1079060_state'                            => '',
+                       'q_1079060_zip'                              => '',
+                       'q_1079060_country'                          => '',
+                       'q_1045947_years_using_wp'                   => '',
+                       'q_1068246_ways_involved'                    => array(),
+                       'q_1068246_ways_involved_other'              => '',
+                       'q_1046032_attended_camp_before'             => '',
+                       'q_1046033_camps_been_to'                    => '',
+                       'q_1068223_hope_to_accomplish'               => array(),
+                       'q_1068223_hope_to_accomplish_other'         => '',
+
+                       // Part 2
+                       'q_1045950_active_meetup'                    => '',
+                       'q_1045953_role_in_meetup'                   => '',
+                       'q_1045972_meetup_url'                       => '',
+                       'q_1045967_meetup_members'                   => '',
+                       'q_1045956_how_often_meetup'                 => '',
+                       'q_1045971_how_many_attend'                  => '',
+                       'q_1079086_other_tech_events'                => '',
+                       'q_1079082_other_tech_events_success'        => '',
+
+                       // Part 3
+                       'q_1079103_wordcamp_location'                => '',
+                       'q_1046006_wordcamp_date'                    => '',
+                       'q_1046007_how_many_attendees'               => '',
+                       'q_1046038_organized_event_before'           => '',
+                       'q_1046099_describe_events'                  => '',
+                       'q_1046101_have_co_organizers'               => '',
+                       'q_1068188_relationship_co_organizers'       => array(),
+                       'q_1068188_relationship_co_organizers_other' => '',
+                       'q_1068187_co_organizer_contact_info'        => '',
+                       'q_1068214_raise_money'                      => '',
+                       'q_1068220_interested_sponsors'              => '',
+                       'q_1046009_good_presenters'                  => '',
+                       'q_1046021_presenter_names'                  => '',
+                       'q_1068197_venue_connections'                => '',
+                       'q_1068212_venues_considering'               => '',
+                       'q_4236565_wporg_username'                   => '',
+                       'q_4236565_slack_username'                   => '',
+                       'where_find_online'                          => '',
+                       'q_1079098_anything_else'                    => '',
+
+                       // Bonus
+                       'q_1079112_best_describes_you'               => '',
+                       'q_1079112_best_describes_you_other'         => '',
+               );
+
+               return $values;
+       }
+
+       /**
+        * Create a WordCamp post from an application
+        *
+        * @param array $data
+        *
+        * @return bool|\WP_Error
+        */
+       function create_post( $data ) {
+               // Create the post
+               $user      = wcorg_get_user_by_canonical_names( $data['q_4236565_wporg_username'] );
+               $statues   = \WordCamp_Loader::get_post_statuses();
+               $countries = wcorg_get_countries();
+
+               $post = array(
+                       'post_type'   => $this->get_event_type(),
+                       'post_title'  => 'WordCamp ' . $data['q_1079103_wordcamp_location'],
+                       'post_status' => WCPT_DEFAULT_STATUS,
+                       'post_author' => is_a( $user, 'WP_User' ) ? $user->ID : 7694169, // Set `wordcamp` as author if supplied username is not valid
+               );
+
+               $post_id = wp_insert_post( $post, true );
+
+               if ( is_wp_error( $post_id ) ) {
+                       return $post_id;
+               }
+
+               // Populate the meta fields
+               add_post_meta( $post_id, '_application_data', $data );
+               add_post_meta( $post_id, '_application_submitter_ip_address', $_SERVER['REMOTE_ADDR'] );
+
+               add_post_meta(
+                       $post_id, 'Organizer Name', sprintf(
+                               '%s %s',
+                               $data['q_1079074_first_name'],
+                               $data['q_1079074_last_name']
+                       )
+               );
+
+               add_post_meta( $post_id, 'Email Address', $data['q_1079059_email'] );
+               add_post_meta( $post_id, 'Location', $data['q_1079103_wordcamp_location'] );
+               add_post_meta( $post_id, 'Number of Anticipated Attendees', $data['q_1046007_how_many_attendees'] );
+               add_post_meta( $post_id, 'WordPress.org Username', $data['q_4236565_wporg_username'] );
+
+               add_post_meta(
+                       $post_id, 'Mailing Address', sprintf(
+                               "%s\n%s%s%s %s\n%s",
+                               $data['q_1079060_add1'],
+                               $data['q_1079060_add2'] ? $data['q_1079060_add2'] . "\n" : '',
+                               $data['q_1079060_city'] ? $data['q_1079060_city'] . ', ' : '',
+                               $data['q_1079060_state'],
+                               $data['q_1079060_zip'],
+                               $data['q_1079060_country'] ? $countries[ $data['q_1079060_country'] ]['name'] : ''
+                       )
+               );
+
+               add_post_meta(
+                       $post_id, '_status_change', array(
+                               'timestamp' => time(),
+                               'user_id'   => is_a( $user, 'WP_User' ) ? $user->ID : 0,
+                               'message'   => sprintf( '%s &rarr; %s', 'Application', $statues[ WCPT_DEFAULT_STATUS ] ),
+                       )
+               );
+
+               $this->post = get_post( $post_id );
+               return true;
+       }
+
+       /**
+        * Get organizer email if set
+        *
+        * @return null|string
+        */
+       function get_organizer_email() {
+               if ( isset( $this->post ) && isset( $this->post->ID ) ) {
+                       return get_post_meta( $this->post->ID, 'q_1079059_email' );
+               }
+       }
+
+       /**
+        * Get meetup location if set
+        *
+        * @return null|string
+        */
+       function get_event_location() {
+               if ( isset( $this->post ) && isset( $this->post->ID ) ) {
+                       return get_post_meta( $this->post->ID, 'q_1079103_wordcamp_location' );
+               }
+       }
+
+}
</ins><span class="cx" style="display: block; padding: 0 10px">Property changes on: sites/trunk/wordcamp.org/public_html/wp-content/plugins/wcpt/wcpt-wordcamp/class-wordcamp-application.php
</span><span class="cx" style="display: block; padding: 0 10px">___________________________________________________________________
</span></span></pre></div>
<a id="svneolstyle"></a>
<div class="addfile"><h4 style="background-color: #eee; color: inherit; margin: 1em 0; padding: 1.3em; font-size: 115%">Added: svn:eol-style</h4></div>
<ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+native
</ins><span class="cx" style="display: block; padding: 0 10px">\ No newline at end of property
</span><a id="sitestrunkwordcamporgpublic_htmlwpcontentpluginswcptwcptwordcampwordcampadminphp"></a>
<div class="modfile"><h4 style="background-color: #eee; color: inherit; margin: 1em 0; padding: 1.3em; font-size: 115%">Modified: sites/trunk/wordcamp.org/public_html/wp-content/plugins/wcpt/wcpt-wordcamp/wordcamp-admin.php</h4>
<pre class="diff"><span>
<span class="info" style="display: block; padding: 0 10px; color: #888">--- sites/trunk/wordcamp.org/public_html/wp-content/plugins/wcpt/wcpt-wordcamp/wordcamp-admin.php     2018-08-13 07:28:19 UTC (rev 7606)
+++ sites/trunk/wordcamp.org/public_html/wp-content/plugins/wcpt/wcpt-wordcamp/wordcamp-admin.php       2018-08-13 11:52:14 UTC (rev 7607)
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -1,649 +1,523 @@
</span><span class="cx" style="display: block; padding: 0 10px"> <?php
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px"> use WordCamp\Mentors_Dashboard;
</span><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+use WordPress_Community\Applications\WordCamp_Application;
</ins><span class="cx" style="display: block; padding: 0 10px"> 
</span><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+require_once WCPT_DIR . 'wcpt-event/class-event-admin.php';
+
</ins><span class="cx" style="display: block; padding: 0 10px"> if ( ! class_exists( 'WordCamp_Admin' ) ) :
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-/**
- * WCPT_Admin
- *
- * Loads plugin admin area
- *
- * @package WordCamp Post Type
- * @subpackage Admin
- * @since WordCamp Post Type (0.1)
- */
-class WordCamp_Admin {
-       protected $active_admin_notices;
-
</del><span class="cx" style="display: block; padding: 0 10px">         /**
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-         * Initialize WCPT Admin
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+  * WCPT_Admin
+        *
+        * Loads plugin admin area
+        *
+        * @package WordCamp Post Type
+        * @subpackage Admin
+        * @since WordCamp Post Type (0.1)
</ins><span class="cx" style="display: block; padding: 0 10px">          */
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-        function __construct() {
-               $this->active_admin_notices = array();
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+ class WordCamp_Admin extends Event_Admin {
+               protected $active_admin_notices;
</ins><span class="cx" style="display: block; padding: 0 10px"> 
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                // Add some general styling to the admin area
-               add_action( 'wcpt_admin_head',                                array( $this, 'admin_head' ) );
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+         /**
+                * Initialize WCPT Admin
+                */
+               function __construct() {
</ins><span class="cx" style="display: block; padding: 0 10px"> 
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                // Forum column headers.
-               add_filter( 'manage_' . WCPT_POST_TYPE_ID . '_posts_columns', array( $this, 'column_headers' ) );
-               add_filter( 'display_post_states',                            array( $this, 'display_post_states' ) );
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                 parent::__construct();
</ins><span class="cx" style="display: block; padding: 0 10px"> 
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                // Forum columns (in page row)
-               add_action( 'manage_posts_custom_column',                     array( $this, 'column_data' ), 10, 2 );
-               add_filter( 'post_row_actions',                               array( $this, 'post_row_actions' ), 10, 2 );
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                 $this->active_admin_notices = array();
</ins><span class="cx" style="display: block; padding: 0 10px"> 
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                // Topic metabox actions
-               add_action( 'add_meta_boxes',                                 array( $this, 'metabox' ) );
-               add_action( 'save_post_' . WCPT_POST_TYPE_ID,                 array( $this, 'metabox_save' ), 10, 2 );
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                 // Add some general styling to the admin area
+                       add_action( 'wcpt_admin_head', array( $this, 'admin_head' ) );
</ins><span class="cx" style="display: block; padding: 0 10px"> 
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                // Scripts and CSS
-               add_action( 'admin_enqueue_scripts',                          array( $this, 'admin_scripts' ) );
-               add_action( 'admin_print_styles',                             array( $this, 'admin_styles' ) );
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                 // Scripts and CSS
+                       add_action( 'admin_enqueue_scripts', array( $this, 'admin_scripts' ) );
</ins><span class="cx" style="display: block; padding: 0 10px"> 
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                // Post status transitions
-               add_action( 'transition_post_status',                         array( $this, 'trigger_schedule_actions' ), 10, 3 );
-               add_action( 'transition_post_status',                         array( $this, 'log_status_changes'       ), 10, 3 );
-               add_action( 'wcpt_approved_for_pre_planning',                 array( $this, 'add_organizer_to_central' ), 10 );
-               add_action( 'wcpt_approved_for_pre_planning',                 array( $this, 'mark_date_added_to_planning_schedule' ), 10 );
-               add_filter( 'wp_insert_post_data',                            array( $this, 'enforce_post_status' ), 10, 2 );
-               add_filter( 'wp_insert_post_data',                            array( $this, 'require_complete_meta_to_publish_wordcamp' ), 11, 2 ); // after enforce_post_status
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                 // Post status transitions
+                       add_action( 'transition_post_status', array( $this, 'trigger_schedule_actions' ), 10, 3 );
+                       add_action( 'wcpt_approved_for_pre_planning', array( $this, 'add_organizer_to_central' ), 10 );
+                       add_action( 'wcpt_approved_for_pre_planning', array( $this, 'mark_date_added_to_planning_schedule' ), 10 );
</ins><span class="cx" style="display: block; padding: 0 10px"> 
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                // Admin notices
-               add_action( 'admin_notices',                                  array( $this, 'print_admin_notices' ) );
-               add_filter( 'redirect_post_location',                         array( $this, 'add_admin_notices_to_redirect_url' ), 10, 2 );
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                 add_filter( 'wp_insert_post_data', array( $this, 'enforce_post_status' ), 10, 2 );
</ins><span class="cx" style="display: block; padding: 0 10px"> 
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                // Cron jobs
-               add_action( 'plugins_loaded',                                 array( $this, 'schedule_cron_jobs'          ), 11 );
-               add_action( 'wcpt_close_wordcamps_after_event',               array( $this, 'close_wordcamps_after_event' )     );
-       }
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                 add_filter(
+                               'wp_insert_post_data', array(
+                                       $this,
+                                       'require_complete_meta_to_publish_wordcamp',
+                               ), 11, 2
+                       ); // after enforce_post_status
</ins><span class="cx" style="display: block; padding: 0 10px"> 
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-        /**
-        * metabox ()
-        *
-        * Add the metabox
-        *
-        * @uses add_meta_box
-        */
-       function metabox() {
-               add_meta_box(
-                       'wcpt_information',
-                       __( 'WordCamp Information', 'wcpt' ),
-                       'wcpt_wordcamp_metabox',
-                       WCPT_POST_TYPE_ID,
-                       'advanced',
-                       'high'
-               );
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                 // Admin notices
+                       add_action( 'admin_notices', array( $this, 'print_admin_notices' ) );
</ins><span class="cx" style="display: block; padding: 0 10px"> 
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                add_meta_box(
-                       'wcpt_organizer_info',
-                       __( 'Organizing Team', 'wcpt' ),
-                       'wcpt_organizer_metabox',
-                       WCPT_POST_TYPE_ID,
-                       'advanced',
-                       'high'
-               );
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                 add_filter( 'redirect_post_location', array( $this, 'add_admin_notices_to_redirect_url' ), 10, 2 );
</ins><span class="cx" style="display: block; padding: 0 10px"> 
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                add_meta_box(
-                       'wcpt_venue_info',
-                       __( 'Venue Information', 'wcpt' ),
-                       'wcpt_venue_metabox',
-                       WCPT_POST_TYPE_ID,
-                       'advanced',
-                       'high'
-               );
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                 // Cron jobs
+                       add_action( 'plugins_loaded', array( $this, 'schedule_cron_jobs' ), 11 );
+                       add_action( 'wcpt_close_wordcamps_after_event', array( $this, 'close_wordcamps_after_event' ) );
+                       add_action( 'wcpt_metabox_save_done', array( $this, 'update_venue_address' ) );
+                       add_action( 'wcpt_metabox_save_done', array( $this, 'update_mentor' ) );
+               }
</ins><span class="cx" style="display: block; padding: 0 10px"> 
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                add_meta_box(
-                       'wcpt_contributor_info',
-                       __( 'Contributor Day Information', 'wcpt' ),
-                       'wcpt_contributor_metabox',
-                       WCPT_POST_TYPE_ID,
-                       'advanced'
-               );
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+         /**
+                * metabox ()
+                *
+                * Add the metabox
+                *
+                * @uses add_meta_box
+                */
+               function metabox() {
+                       add_meta_box(
+                               'wcpt_information',
+                               __( 'WordCamp Information', 'wcpt' ),
+                               'wcpt_wordcamp_metabox',
+                               WCPT_POST_TYPE_ID,
+                               'advanced',
+                               'high'
+                       );
</ins><span class="cx" style="display: block; padding: 0 10px"> 
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                add_meta_box(
-                       'wcpt_original_application',
-                       'Original Application',
-                       array( $this, 'original_application_metabox' ),
-                       WCPT_POST_TYPE_ID,
-                       'advanced',
-                       'low'
-               );
-
-               // Notes are private, so only show them to WordCamp Wranglers
-               if ( current_user_can( 'wordcamp_wrangle_wordcamps' ) ) {
</del><span class="cx" style="display: block; padding: 0 10px">                         add_meta_box(
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                                'wcpt_notes',
-                               __( 'Add Private Note', 'wordcamporg' ),
-                               'wcpt_add_note_metabox',
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                         'wcpt_organizer_info',
+                               __( 'Organizing Team', 'wcpt' ),
+                               'wcpt_organizer_metabox',
</ins><span class="cx" style="display: block; padding: 0 10px">                                 WCPT_POST_TYPE_ID,
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                                'side',
-                               'low'
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                         'advanced',
+                               'high'
</ins><span class="cx" style="display: block; padding: 0 10px">                         );
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">                        add_meta_box(
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                                'wcpt_log',
-                               'Log',
-                               'wcpt_log_metabox',
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                         'wcpt_venue_info',
+                               __( 'Venue Information', 'wcpt' ),
+                               'wcpt_venue_metabox',
</ins><span class="cx" style="display: block; padding: 0 10px">                                 WCPT_POST_TYPE_ID,
</span><span class="cx" style="display: block; padding: 0 10px">                                'advanced',
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                                'low'
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                         'high'
</ins><span class="cx" style="display: block; padding: 0 10px">                         );
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                }
</del><span class="cx" style="display: block; padding: 0 10px"> 
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                // Remove core's submitdiv.
-               remove_meta_box( 'submitdiv', WCPT_POST_TYPE_ID, 'side' );
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                 add_meta_box(
+                               'wcpt_contributor_info',
+                               __( 'Contributor Day Information', 'wcpt' ),
+                               'wcpt_contributor_metabox',
+                               WCPT_POST_TYPE_ID,
+                               'advanced'
+                       );
</ins><span class="cx" style="display: block; padding: 0 10px"> 
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                $statuses = WordCamp_Loader::get_post_statuses();
-
-               add_meta_box(
-                       'submitdiv',
-                       __( 'Status', 'wordcamporg' ),
-                       array( $this, 'metabox_status' ),
-                       WCPT_POST_TYPE_ID,
-                       'side',
-                       'high'
-               );
-       }
-
-       /**
-        * metabox_save ()
-        *
-        * Pass the metabox values before saving
-        *
-        * @param int $post_id
-        * @return int
-        */
-       function metabox_save( $post_id, $post ) {
-               // Don't add/remove meta on revisions and auto-saves
-               if ( wp_is_post_autosave( $post_id ) || wp_is_post_revision( $post_id ) )
-                       return;
-
-               // Don't add/remove meta on trash, untrash, restore, etc
-               if ( empty( $_POST['action'] ) || 'editpost' != $_POST['action'] ) {
-                       return;
</del><span class="cx" style="display: block; padding: 0 10px">                 }
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                // WordCamp post type only
-               if ( WCPT_POST_TYPE_ID != get_post_type() ) {
-                       return;
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+         /**
+                * Get label for event type
+                *
+                * @return string
+                */
+               static function get_event_label() {
+                       return WordCamp_Application::get_event_label();
</ins><span class="cx" style="display: block; padding: 0 10px">                 }
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                // Make sure the requset came from the edit post screen.
-               if ( empty( $_POST['_wpnonce'] ) || ! wp_verify_nonce( $_POST['_wpnonce'], 'update-post_' . $post_id ) ) {
-                       return;
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+         /**
+                * Get wordcamp post type
+                *
+                * @return string
+                */
+               static function get_event_type() {
+                       return WordCamp_Application::get_event_type();
</ins><span class="cx" style="display: block; padding: 0 10px">                 }
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                // If the venue address was changed, update its coordinates
-               $new_address = $_POST[ wcpt_key_to_str( 'Physical Address', 'wcpt_' ) ];
-               if ( $new_address != get_post_meta( $post_id, 'Physical Address', true ) ) {
-                       $this->update_venue_address( $post_id, $new_address );
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+         /**
+                * Check if a field is readonly.
+                *
+                * @param $key
+                *
+                * @return bool
+                */
+               function _is_protected_field( $key ) {
+                       return self::is_protected_field( $key );
</ins><span class="cx" style="display: block; padding: 0 10px">                 }
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                // If the Mentor username changed, update the site
-               $mentor_username = $_POST[ wcpt_key_to_str( 'Mentor WordPress.org User Name', 'wcpt_' ) ];
-               if ( $mentor_username !== get_post_meta( $post_id, 'Mentor WordPress.org User Name', true ) ) {
-                   $this->add_mentor( $post, $mentor_username );
-        }
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+         public function update_mentor( $post_id ) {
+                       if ( $this->get_event_type() !== get_post_type() ) {
+                               return;
+                       }
</ins><span class="cx" style="display: block; padding: 0 10px"> 
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                // Post meta keys
-               $wcpt_meta_keys = WordCamp_Admin::meta_keys();
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                 // If the Mentor username changed, update the site
+                       $mentor_username = $_POST[ wcpt_key_to_str( 'Mentor WordPress.org User Name', 'wcpt_' ) ];
+                       if ( $mentor_username !== get_post_meta( $post_id, 'Mentor WordPress.org User Name', true ) ) {
+                               $this->add_mentor( get_post( $post_id ), $mentor_username );
+                       }
</ins><span class="cx" style="display: block; padding: 0 10px"> 
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                // Loop through meta keys and update
-               foreach ( $wcpt_meta_keys as $key => $value ) {
-                       // Get post value
-                       $post_value   = wcpt_key_to_str( $key, 'wcpt_' );
-                       $values[ $key ] = isset( $_POST[ $post_value ] ) ? esc_attr( $_POST[ $post_value ] ) : '';
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+         }
</ins><span class="cx" style="display: block; padding: 0 10px"> 
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                        // Don't update protected fields
-                       if ( self::is_protected_field( $key ) ) {
-                               continue;
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+         /**
+                * Update venue address co-ords if changed
+                *
+                * These are used for the maps on Central, stats, etc.
+                *
+                * @param int $post_id Post id
+                */
+               public function update_venue_address( $post_id ) {
+                       if ( $this->get_event_type() !== get_post_type() ) {
+                               return;
</ins><span class="cx" style="display: block; padding: 0 10px">                         }
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                        switch ( $value ) {
-                               case 'text'     :
-                               case 'textarea' :
-                                       update_post_meta( $post_id, $key, $values[ $key ] );
-                                       break;
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                 // If the venue address was changed, update its coordinates
+                       $new_address = $_POST[ wcpt_key_to_str( 'Physical Address', 'wcpt_' ) ];
+                       if ( $new_address === get_post_meta( $post_id, 'Physical Address', true ) ) {
+                               return;
+                       }
</ins><span class="cx" style="display: block; padding: 0 10px"> 
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                                case 'number' :
-                                       update_post_meta( $post_id, $key, floatval( $values[ $key ] ) );
-                                       break;
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                 $request_url = add_query_arg(
+                               'address',
+                               urlencode( $new_address ),
+                               'https://maps.googleapis.com/maps/api/geocode/json'
+                       );
</ins><span class="cx" style="display: block; padding: 0 10px"> 
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                                case 'checkbox' :
-                                       if ( ! empty( $values[ $key ] ) && 'on' == $values[ $key ] ) {
-                                               update_post_meta( $post_id, $key, true );
-                                       } else {
-                                               update_post_meta( $post_id, $key, false );
-                                       }
-                                       break;
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                 $response = wcorg_redundant_remote_get( $request_url );
</ins><span class="cx" style="display: block; padding: 0 10px"> 
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                                case 'date' :
-                                       if ( !empty( $values[ $key ] ) ) {
-                                               $values[ $key ] = strtotime( $values[ $key ] );
-                                       }
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                 // Don't delete the existing (and probably good) values if the request failed
+                       if ( is_wp_error( $response ) ) {
+                               return;
+                       }
</ins><span class="cx" style="display: block; padding: 0 10px"> 
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                                        update_post_meta( $post_id, $key, $values[ $key ] );
-                                       break;
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                 $meta_values = $this->parse_geocode_response( $response );
</ins><span class="cx" style="display: block; padding: 0 10px"> 
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                                case 'select-currency' :
-                                       $currencies = WordCamp_Budgets::get_currencies();
-                                       $new_value  = ( array_key_exists( $values[ $key ], $currencies ) ) ? $values[ $key ] : '';
-
-                                       update_post_meta( $post_id, $key, $new_value );
-                                       break;
-
-                               default:
-                                       do_action( 'wcpt_metabox_save', $key, $value, $post_id );
-                                       break;
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                 foreach ( $meta_values as $key => $value ) {
+                               if ( is_null( $value ) ) {
+                                       delete_post_meta( $post_id, $key );
+                               } else {
+                                       update_post_meta( $post_id, $key, $value );
+                               }
</ins><span class="cx" style="display: block; padding: 0 10px">                         }
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                }
</del><span class="cx" style="display: block; padding: 0 10px"> 
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                do_action( 'wcpt_metabox_save_done', $post_id );
-
-               $this->validate_and_add_note( $post_id );
-       }
-
-       /**
-        * Validate and add a new private note
-        *
-        * @param int $post_id
-        */
-       protected function validate_and_add_note( $post_id ) {
-               if ( empty( $_POST['wcpt_new_note' ] ) )
-                       return;
-
-               check_admin_referer( 'wcpt_notes', 'wcpt_notes_nonce' );
-
-               $new_note_message = sanitize_text_field( wp_unslash( $_POST['wcpt_new_note'] ) );
-
-               if ( empty( $new_note_message ) ) {
-                       return;
</del><span class="cx" style="display: block; padding: 0 10px">                 }
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                // Note that this is private, see wcpt_get_log_entries()
-               add_post_meta( $post_id, '_note', array(
-                       'timestamp' => time(),
-                       'user_id'   => get_current_user_id(),
-                       'message'   => $new_note_message,
-               ) );
-       }
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+         /**
+                * Parse the values we want out of the Geocode API response
+                *
+                * @see https://developers.google.com/maps/documentation/geocoding/intro#Types API response schema
+                *
+                * @param $response
+                *
+                * @return array
+                */
+               protected function parse_geocode_response( $response ) {
+                       $body = json_decode( wp_remote_retrieve_body( $response ) );
+                       $body = isset( $body->results[0] ) ? $body->results[0] : null;
</ins><span class="cx" style="display: block; padding: 0 10px"> 
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-        /**
-        * Store the individual components of a camp's venue address
-        *
-        * These are used for the maps on Central, stats, etc.
-        *
-        * @param int    $post_id
-        * @param string $address
-        */
-       function update_venue_address( $post_id, $address ) {
-               $request_url = add_query_arg(
-                       'address',
-                       urlencode( $address ),
-                       'https://maps.googleapis.com/maps/api/geocode/json'
-               );
-
-               $response = wcorg_redundant_remote_get( $request_url );
-
-               // Don't delete the existing (and probably good) values if the request failed
-               if ( is_wp_error( $response ) ) {
-                       return;
-               }
-
-               $meta_values = $this->parse_geocode_response( $response );
-
-               foreach ( $meta_values as $key => $value ) {
-                       if ( is_null( $value ) ) {
-                               delete_post_meta( $post_id, $key );
-                       } else {
-                               update_post_meta( $post_id, $key, $value );
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                 if ( isset( $body->geometry->location->lat ) ) {
+                               $coordinates = array(
+                                       'latitude'  => $body->geometry->location->lat,
+                                       'longitude' => $body->geometry->location->lng,
+                               );
</ins><span class="cx" style="display: block; padding: 0 10px">                         }
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                }
-       }
</del><span class="cx" style="display: block; padding: 0 10px"> 
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-        /**
-        * Parse the values we want out of the Geocode API response
-        *
-        * @see https://developers.google.com/maps/documentation/geocoding/intro#Types API response schema
-        *
-        * @param $response
-        *
-        * @return array
-        */
-       protected function parse_geocode_response( $response ) {
-               $body = json_decode( wp_remote_retrieve_body( $response ) );
-               $body = isset ( $body->results[0] ) ? $body->results[0] : null;
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                 if ( isset( $body->address_components ) ) {
+                               foreach ( $body->address_components as $component ) {
+                                       foreach ( $component->types as $type ) {
+                                               switch ( $type ) {
</ins><span class="cx" style="display: block; padding: 0 10px"> 
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                if ( isset( $body->geometry->location->lat ) ) {
-                       $coordinates = array(
-                               'latitude'  => $body->geometry->location->lat,
-                               'longitude' => $body->geometry->location->lng
-                       );
-               }
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                                                 case 'locality':
+                                                       case 'administrative_area_level_1':
+                                                       case 'postal_code':
+                                                               $$type = $component->long_name;
+                                                               break;
</ins><span class="cx" style="display: block; padding: 0 10px"> 
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                if ( isset ( $body->address_components ) ) {
-                       foreach ( $body->address_components as $component ) {
-                               foreach ( $component->types as $type ) {
-                                       switch ( $type ) {
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                                                 case 'country':
+                                                               $country_code = $component->short_name; // This is not guaranteed to be ISO 3166-1 alpha-2, but should match in most cases
+                                                               $country_name = $component->long_name;
+                                                               break;
</ins><span class="cx" style="display: block; padding: 0 10px"> 
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                                                case 'locality':
-                                               case 'administrative_area_level_1':
-                                               case 'postal_code':
-                                                       $$type = $component->long_name;
-                                                       break;
-
-                                               case 'country':
-                                                       $country_code = $component->short_name; // This is not guaranteed to be ISO 3166-1 alpha-2, but should match in most cases
-                                                       $country_name = $component->long_name;
-                                                       break;
-
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                                         }
</ins><span class="cx" style="display: block; padding: 0 10px">                                         }
</span><span class="cx" style="display: block; padding: 0 10px">                                }
</span><span class="cx" style="display: block; padding: 0 10px">                        }
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                }
</del><span class="cx" style="display: block; padding: 0 10px"> 
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                $values = array(
-                       '_venue_coordinates'  => isset( $coordinates                 ) ? $coordinates                 : null,
-                       '_venue_city'         => isset( $locality                    ) ? $locality                    : null,
-                       '_venue_state'        => isset( $administrative_area_level_1 ) ? $administrative_area_level_1 : null,
-                       '_venue_country_code' => isset( $country_code                ) ? $country_code                : null,
-                       '_venue_country_name' => isset( $country_name                ) ? $country_name                : null,
-                       '_venue_zip'          => isset( $postal_code                 ) ? $postal_code                 : null,
-               );
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                 $values = array(
+                               '_venue_coordinates'  => isset( $coordinates ) ? $coordinates : null,
+                               '_venue_city'         => isset( $locality ) ? $locality : null,
+                               '_venue_state'        => isset( $administrative_area_level_1 ) ? $administrative_area_level_1 : null,
+                               '_venue_country_code' => isset( $country_code ) ? $country_code : null,
+                               '_venue_country_name' => isset( $country_name ) ? $country_name : null,
+                               '_venue_zip'          => isset( $postal_code ) ? $postal_code : null,
+                       );
</ins><span class="cx" style="display: block; padding: 0 10px"> 
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                return $values;
-       }
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                 return $values;
+               }
</ins><span class="cx" style="display: block; padding: 0 10px"> 
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-        /**
-     * Add the Mentor as an administrator on the given site.
-     *
-        * @param WP_Post $wordcamp        WordCamp post object.
-        * @param string  $mentor_username Mentor's WP.org user login.
-        */
-       protected function add_mentor( $wordcamp, $mentor_username ) {
-               $blog_id    = get_wordcamp_site_id( $wordcamp );
-           $new_mentor = get_user_by( 'login', $mentor_username );
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+         /**
+                * Add the Mentor as an administrator on the given site.
+                *
+                * @param WP_Post $wordcamp        WordCamp post object.
+                * @param string  $mentor_username Mentor's WP.org user login.
+                */
+               protected function add_mentor( $wordcamp, $mentor_username ) {
+                       $blog_id    = get_wordcamp_site_id( $wordcamp );
+                       $new_mentor = get_user_by( 'login', $mentor_username );
</ins><span class="cx" style="display: block; padding: 0 10px"> 
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                if ( ! $blog_id || ! $new_mentor ) {
-                   return;
-        }
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                 if ( ! $blog_id || ! $new_mentor ) {
+                               return;
+                       }
</ins><span class="cx" style="display: block; padding: 0 10px"> 
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-        add_user_to_blog( $blog_id, $new_mentor->ID, 'administrator' );
-    }
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                 add_user_to_blog( $blog_id, $new_mentor->ID, 'administrator' );
+               }
</ins><span class="cx" style="display: block; padding: 0 10px"> 
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-        /**
-        * meta_keys ()
-        *
-        * Returns post meta key
-        *
-        * @param string $meta_group
-        *
-        * @return array
-        */
-       function meta_keys( $meta_group = '' ) {
-               /*
-                * Warning: These keys are used for both the input field label and the postmeta key, so if you want to
-                * modify an existing label then you'll also need to migrate any rows in the database to use the new key.
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+         /**
+                * meta_keys ()
</ins><span class="cx" style="display: block; padding: 0 10px">                  *
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                 * Some of them are also exposed via the JSON API, so you'd need to build in a back-compat layer for that
-                * as well.
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+          * Returns post meta key
</ins><span class="cx" style="display: block; padding: 0 10px">                  *
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                 * When adding new keys, updating the wcorg-json-api plugin to either whitelist it, or test that it's not
-                * being exposed.
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+          * @param string $meta_group
+                *
+                * @return array
</ins><span class="cx" style="display: block; padding: 0 10px">                  */
</span><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                static function meta_keys( $meta_group = '' ) {
+                       /*
+                        * Warning: These keys are used for both the input field label and the postmeta key, so if you want to
+                        * modify an existing label then you'll also need to migrate any rows in the database to use the new key.
+                        *
+                        * Some of them are also exposed via the JSON API, so you'd need to build in a back-compat layer for that
+                        * as well.
+                        *
+                        * When adding new keys, updating the wcorg-json-api plugin to either whitelist it, or test that it's not
+                        * being exposed.
+                        */
</ins><span class="cx" style="display: block; padding: 0 10px"> 
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                switch ( $meta_group ) {
-                       case 'organizer':
-                               $retval = array (
-                                       'Organizer Name'                                 => 'text',
-                                       'WordPress.org Username'                         => 'text',
-                                       'Email Address'                                  => 'text', // Note: This is the lead organizer's e-mail address, which is different than the "E-mail Address" field
-                                       'Telephone'                                      => 'text',
-                                       'Mailing Address'                                => 'textarea',
-                                       'Sponsor Wrangler Name'                          => 'text',
-                                       'Sponsor Wrangler E-mail Address'                => 'text',
-                                       'Budget Wrangler Name'                           => 'text',
-                                       'Budget Wrangler E-mail Address'                 => 'text',
-                                       'Venue Wrangler Name'                            => 'text',
-                                       'Venue Wrangler E-mail Address'                  => 'text',
-                                       'Speaker Wrangler Name'                          => 'text',
-                                       'Speaker Wrangler E-mail Address'                => 'text',
-                                       'Food/Beverage Wrangler Name'                    => 'text',
-                                       'Food/Beverage Wrangler E-mail Address'          => 'text',
-                                       'Swag Wrangler Name'                             => 'text',
-                                       'Swag Wrangler E-mail Address'                   => 'text',
-                                       'Volunteer Wrangler Name'                        => 'text',
-                                       'Volunteer Wrangler E-mail Address'              => 'text',
-                                       'Printing Wrangler Name'                         => 'text',
-                                       'Printing Wrangler E-mail Address'               => 'text',
-                                       'Design Wrangler Name'                           => 'text',
-                                       'Design Wrangler E-mail Address'                 => 'text',
-                                       'Website Wrangler Name'                          => 'text',
-                                       'Website Wrangler E-mail Address'                => 'text',
-                                       'Social Media/Publicity Wrangler Name'           => 'text',
-                                       'Social Media/Publicity Wrangler E-mail Address' => 'text',
-                                       'A/V Wrangler Name'                              => 'text',
-                                       'A/V Wrangler E-mail Address'                    => 'text',
-                                       'Party Wrangler Name'                            => 'text',
-                                       'Party Wrangler E-mail Address'                  => 'text',
-                                       'Travel Wrangler Name'                           => 'text',
-                                       'Travel Wrangler E-mail Address'                 => 'text',
-                                       'Safety Wrangler Name'                           => 'text',
-                                       'Safety Wrangler E-mail Address'                 => 'text',
-                                       'Mentor WordPress.org User Name'                 => 'text',
-                                       'Mentor Name'                                    => 'text',
-                                       'Mentor E-mail Address'                          => 'text',
-                               );
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                 switch ( $meta_group ) {
+                               case 'organizer':
+                                       $retval = array(
+                                               'Organizer Name'                   => 'text',
+                                               'WordPress.org Username'           => 'text',
+                                               'Email Address'                    => 'text', // Note: This is the lead organizer's e-mail address, which is different than the "E-mail Address" field
+                                               'Telephone'                        => 'text',
+                                               'Mailing Address'                  => 'textarea',
+                                               'Sponsor Wrangler Name'            => 'text',
+                                               'Sponsor Wrangler E-mail Address'  => 'text',
+                                               'Budget Wrangler Name'             => 'text',
+                                               'Budget Wrangler E-mail Address'   => 'text',
+                                               'Venue Wrangler Name'              => 'text',
+                                               'Venue Wrangler E-mail Address'    => 'text',
+                                               'Speaker Wrangler Name'            => 'text',
+                                               'Speaker Wrangler E-mail Address'  => 'text',
+                                               'Food/Beverage Wrangler Name'      => 'text',
+                                               'Food/Beverage Wrangler E-mail Address' => 'text',
+                                               'Swag Wrangler Name'               => 'text',
+                                               'Swag Wrangler E-mail Address'     => 'text',
+                                               'Volunteer Wrangler Name'          => 'text',
+                                               'Volunteer Wrangler E-mail Address' => 'text',
+                                               'Printing Wrangler Name'           => 'text',
+                                               'Printing Wrangler E-mail Address' => 'text',
+                                               'Design Wrangler Name'             => 'text',
+                                               'Design Wrangler E-mail Address'   => 'text',
+                                               'Website Wrangler Name'            => 'text',
+                                               'Website Wrangler E-mail Address'  => 'text',
+                                               'Social Media/Publicity Wrangler Name' => 'text',
+                                               'Social Media/Publicity Wrangler E-mail Address' => 'text',
+                                               'A/V Wrangler Name'                => 'text',
+                                               'A/V Wrangler E-mail Address'      => 'text',
+                                               'Party Wrangler Name'              => 'text',
+                                               'Party Wrangler E-mail Address'    => 'text',
+                                               'Travel Wrangler Name'             => 'text',
+                                               'Travel Wrangler E-mail Address'   => 'text',
+                                               'Safety Wrangler Name'             => 'text',
+                                               'Safety Wrangler E-mail Address'   => 'text',
+                                               'Mentor WordPress.org User Name'   => 'text',
+                                               'Mentor Name'                      => 'text',
+                                               'Mentor E-mail Address'            => 'text',
+                                       );
</ins><span class="cx" style="display: block; padding: 0 10px"> 
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                                break;
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                                 break;
</ins><span class="cx" style="display: block; padding: 0 10px"> 
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                        case 'venue':
-                               $retval = array (
-                                       'Venue Name'                      => 'text',
-                                       'Physical Address'                => 'textarea',
-                                       'Maximum Capacity'                => 'text',
-                                       'Available Rooms'                 => 'text',
-                                       'Website URL'                     => 'text',
-                                       'Contact Information'             => 'textarea',
-                                       'Exhibition Space Available'      => 'checkbox',
-                               );
-                               break;
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                         case 'venue':
+                                       $retval = array(
+                                               'Venue Name'                 => 'text',
+                                               'Physical Address'           => 'textarea',
+                                               'Maximum Capacity'           => 'text',
+                                               'Available Rooms'            => 'text',
+                                               'Website URL'                => 'text',
+                                               'Contact Information'        => 'textarea',
+                                               'Exhibition Space Available' => 'checkbox',
+                                       );
+                                       break;
</ins><span class="cx" style="display: block; padding: 0 10px"> 
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                        case 'contributor':
-                               // These fields names need to be unique, hence the 'Contributor' prefix on each one
-                               $retval = array (
-                                       'Contributor Day'                   => 'checkbox',
-                                       'Contributor Day Date (YYYY-mm-dd)' => 'date',
-                                       'Contributor Venue Name'            => 'text',
-                                       'Contributor Venue Address'         => 'textarea',
-                                       'Contributor Venue Capacity'        => 'text',
-                                       'Contributor Venue Website URL'     => 'text',
-                                       'Contributor Venue Contact Info'    => 'textarea',
-                               );
-                               break;
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                         case 'contributor':
+                                       // These fields names need to be unique, hence the 'Contributor' prefix on each one
+                                       $retval = array(
+                                               'Contributor Day'                => 'checkbox',
+                                               'Contributor Day Date (YYYY-mm-dd)' => 'date',
+                                               'Contributor Venue Name'         => 'text',
+                                               'Contributor Venue Address'      => 'textarea',
+                                               'Contributor Venue Capacity'     => 'text',
+                                               'Contributor Venue Website URL'  => 'text',
+                                               'Contributor Venue Contact Info' => 'textarea',
+                                       );
+                                       break;
</ins><span class="cx" style="display: block; padding: 0 10px"> 
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                        case 'wordcamp':
-                               $retval = array (
-                                       'Start Date (YYYY-mm-dd)'           => 'date',
-                                       'End Date (YYYY-mm-dd)'             => 'date',
-                                       'Location'                          => 'text',
-                                       'URL'                               => 'wc-url',
-                                       'E-mail Address'                    => 'text',
-                                       // Note: This is the address for the entire organizing team, which is different than the "Email Address" field
-                                       'Twitter'                           => 'text',
-                                       'WordCamp Hashtag'                  => 'text',
-                                       'Number of Anticipated Attendees'   => 'text',
-                                       'Multi-Event Sponsor Region'        => 'mes-dropdown',
-                                       'Global Sponsorship Grant Currency' => 'select-currency',
-                                       'Global Sponsorship Grant Amount'   => 'number',
-                                       'Global Sponsorship Grant'          => 'text',
-                               );
-                               break;
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                         case 'wordcamp':
+                                       $retval = array(
+                                               'Start Date (YYYY-mm-dd)'         => 'date',
+                                               'End Date (YYYY-mm-dd)'           => 'date',
+                                               'Location'                        => 'text',
+                                               'URL'                             => 'wc-url',
+                                               'E-mail Address'                  => 'text',
+                                               // Note: This is the address for the entire organizing team, which is different than the "Email Address" field
+                                               'Twitter'                         => 'text',
+                                               'WordCamp Hashtag'                => 'text',
+                                               'Number of Anticipated Attendees' => 'text',
+                                               'Multi-Event Sponsor Region'      => 'mes-dropdown',
+                                               'Global Sponsorship Grant Currency' => 'select-currency',
+                                               'Global Sponsorship Grant Amount' => 'number',
+                                               'Global Sponsorship Grant'        => 'text',
+                                       );
+                                       break;
</ins><span class="cx" style="display: block; padding: 0 10px"> 
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                        case 'all':
-                       default:
-                               $retval = array(
-                                       'Start Date (YYYY-mm-dd)'           => 'date',
-                                       'End Date (YYYY-mm-dd)'             => 'date',
-                                       'Location'                          => 'text',
-                                       'URL'                               => 'wc-url',
-                                       'E-mail Address'                    => 'text',
-                                       'Twitter'                           => 'text',
-                                       'WordCamp Hashtag'                  => 'text',
-                                       'Number of Anticipated Attendees'   => 'text',
-                                       'Multi-Event Sponsor Region'        => 'mes-dropdown',
-                                       'Global Sponsorship Grant Currency' => 'select-currency',
-                                       'Global Sponsorship Grant Amount'   => 'number',
-                                       'Global Sponsorship Grant'          => 'text',
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                         case 'all':
+                               default:
+                                       $retval = array(
+                                               'Start Date (YYYY-mm-dd)'          => 'date',
+                                               'End Date (YYYY-mm-dd)'            => 'date',
+                                               'Location'                         => 'text',
+                                               'URL'                              => 'wc-url',
+                                               'E-mail Address'                   => 'text',
+                                               'Twitter'                          => 'text',
+                                               'WordCamp Hashtag'                 => 'text',
+                                               'Number of Anticipated Attendees'  => 'text',
+                                               'Multi-Event Sponsor Region'       => 'mes-dropdown',
+                                               'Global Sponsorship Grant Currency' => 'select-currency',
+                                               'Global Sponsorship Grant Amount'  => 'number',
+                                               'Global Sponsorship Grant'         => 'text',
</ins><span class="cx" style="display: block; padding: 0 10px"> 
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                                        'Organizer Name'                                 => 'text',
-                                       'WordPress.org Username'                         => 'text',
-                                       'Email Address'                                  => 'text',
-                                       'Telephone'                                      => 'text',
-                                       'Mailing Address'                                => 'textarea',
-                                       'Sponsor Wrangler Name'                          => 'text',
-                                       'Sponsor Wrangler E-mail Address'                => 'text',
-                                       'Budget Wrangler Name'                           => 'text',
-                                       'Budget Wrangler E-mail Address'                 => 'text',
-                                       'Venue Wrangler Name'                            => 'text',
-                                       'Venue Wrangler E-mail Address'                  => 'text',
-                                       'Speaker Wrangler Name'                          => 'text',
-                                       'Speaker Wrangler E-mail Address'                => 'text',
-                                       'Food/Beverage Wrangler Name'                    => 'text',
-                                       'Food/Beverage Wrangler E-mail Address'          => 'text',
-                                       'Swag Wrangler Name'                             => 'text',
-                                       'Swag Wrangler E-mail Address'                   => 'text',
-                                       'Volunteer Wrangler Name'                        => 'text',
-                                       'Volunteer Wrangler E-mail Address'              => 'text',
-                                       'Printing Wrangler Name'                         => 'text',
-                                       'Printing Wrangler E-mail Address'               => 'text',
-                                       'Design Wrangler Name'                           => 'text',
-                                       'Design Wrangler E-mail Address'                 => 'text',
-                                       'Website Wrangler Name'                          => 'text',
-                                       'Website Wrangler E-mail Address'                => 'text',
-                                       'Social Media/Publicity Wrangler Name'           => 'text',
-                                       'Social Media/Publicity Wrangler E-mail Address' => 'text',
-                                       'A/V Wrangler Name'                              => 'text',
-                                       'A/V Wrangler E-mail Address'                    => 'text',
-                                       'Party Wrangler Name'                            => 'text',
-                                       'Party Wrangler E-mail Address'                  => 'text',
-                                       'Travel Wrangler Name'                           => 'text',
-                                       'Travel Wrangler E-mail Address'                 => 'text',
-                                       'Safety Wrangler Name'                           => 'text',
-                                       'Safety Wrangler E-mail Address'                 => 'text',
-                                       'Mentor WordPress.org User Name'                 => 'text',
-                                       'Mentor Name'                                    => 'text',
-                                       'Mentor E-mail Address'                          => 'text',
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                                         'Organizer Name'                   => 'text',
+                                               'WordPress.org Username'           => 'text',
+                                               'Email Address'                    => 'text',
+                                               'Telephone'                        => 'text',
+                                               'Mailing Address'                  => 'textarea',
+                                               'Sponsor Wrangler Name'            => 'text',
+                                               'Sponsor Wrangler E-mail Address'  => 'text',
+                                               'Budget Wrangler Name'             => 'text',
+                                               'Budget Wrangler E-mail Address'   => 'text',
+                                               'Venue Wrangler Name'              => 'text',
+                                               'Venue Wrangler E-mail Address'    => 'text',
+                                               'Speaker Wrangler Name'            => 'text',
+                                               'Speaker Wrangler E-mail Address'  => 'text',
+                                               'Food/Beverage Wrangler Name'      => 'text',
+                                               'Food/Beverage Wrangler E-mail Address' => 'text',
+                                               'Swag Wrangler Name'               => 'text',
+                                               'Swag Wrangler E-mail Address'     => 'text',
+                                               'Volunteer Wrangler Name'          => 'text',
+                                               'Volunteer Wrangler E-mail Address' => 'text',
+                                               'Printing Wrangler Name'           => 'text',
+                                               'Printing Wrangler E-mail Address' => 'text',
+                                               'Design Wrangler Name'             => 'text',
+                                               'Design Wrangler E-mail Address'   => 'text',
+                                               'Website Wrangler Name'            => 'text',
+                                               'Website Wrangler E-mail Address'  => 'text',
+                                               'Social Media/Publicity Wrangler Name' => 'text',
+                                               'Social Media/Publicity Wrangler E-mail Address' => 'text',
+                                               'A/V Wrangler Name'                => 'text',
+                                               'A/V Wrangler E-mail Address'      => 'text',
+                                               'Party Wrangler Name'              => 'text',
+                                               'Party Wrangler E-mail Address'    => 'text',
+                                               'Travel Wrangler Name'             => 'text',
+                                               'Travel Wrangler E-mail Address'   => 'text',
+                                               'Safety Wrangler Name'             => 'text',
+                                               'Safety Wrangler E-mail Address'   => 'text',
+                                               'Mentor WordPress.org User Name'   => 'text',
+                                               'Mentor Name'                      => 'text',
+                                               'Mentor E-mail Address'            => 'text',
</ins><span class="cx" style="display: block; padding: 0 10px"> 
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                                        'Venue Name'                      => 'text',
-                                       'Physical Address'                => 'textarea',
-                                       'Maximum Capacity'                => 'text',
-                                       'Available Rooms'                 => 'text',
-                                       'Website URL'                     => 'text',
-                                       'Contact Information'             => 'textarea',
-                                       'Exhibition Space Available'      => 'checkbox',
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                                         'Venue Name'                       => 'text',
+                                               'Physical Address'                 => 'textarea',
+                                               'Maximum Capacity'                 => 'text',
+                                               'Available Rooms'                  => 'text',
+                                               'Website URL'                      => 'text',
+                                               'Contact Information'              => 'textarea',
+                                               'Exhibition Space Available'       => 'checkbox',
</ins><span class="cx" style="display: block; padding: 0 10px"> 
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                                        'Contributor Day'                   => 'checkbox',
-                                       'Contributor Day Date (YYYY-mm-dd)' => 'date',
-                                       'Contributor Venue Name'            => 'text',
-                                       'Contributor Venue Address'         => 'textarea',
-                                       'Contributor Venue Capacity'        => 'text',
-                                       'Contributor Venue Website URL'     => 'text',
-                                       'Contributor Venue Contact Info'    => 'textarea',
-                               );
-                               break;
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                                         'Contributor Day'                  => 'checkbox',
+                                               'Contributor Day Date (YYYY-mm-dd)' => 'date',
+                                               'Contributor Venue Name'           => 'text',
+                                               'Contributor Venue Address'        => 'textarea',
+                                               'Contributor Venue Capacity'       => 'text',
+                                               'Contributor Venue Website URL'    => 'text',
+                                               'Contributor Venue Contact Info'   => 'textarea',
+                                       );
+                                       break;
</ins><span class="cx" style="display: block; padding: 0 10px"> 
</span><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                        }
+
+                       return apply_filters( 'wcpt_admin_meta_keys', $retval, $meta_group );
</ins><span class="cx" style="display: block; padding: 0 10px">                 }
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                return apply_filters( 'wcpt_admin_meta_keys', $retval, $meta_group );
-       }
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+         /**
+                * Fired during admin_print_styles
+                * Adds jQuery UI
+                */
+               function admin_scripts() {
</ins><span class="cx" style="display: block; padding: 0 10px"> 
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-        /**
-        * Fired during admin_print_styles
-        * Adds jQuery UI
-        */
-       function admin_scripts() {
-               wp_register_script(
-                       'wcpt-admin',
-                       WCPT_URL . 'javascript/wcpt-wordcamp/admin.js',
-                       array( 'jquery', 'jquery-ui-datepicker' ),
-                       WCPT_VERSION,
-                       true
-               );
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                 // Edit WordCamp screen
+                       if ( WCPT_POST_TYPE_ID === get_post_type() ) {
</ins><span class="cx" style="display: block; padding: 0 10px"> 
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                // Edit WordCamp screen
-               if ( WCPT_POST_TYPE_ID === get_post_type() ) {
-                       wp_enqueue_script( 'wcpt-admin' );
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                         // Default data
+                               $data = array(
+                                       'Mentors' => array(
+                                               'l10n' => array(
+                                                       'selectLabel' => esc_html__( 'Available mentors', 'wordcamporg' ),
+                                                       'confirm'     => esc_html__( 'Update Mentor field contents?', 'wordcamporg' ),
+                                               ),
+                                       ),
+                               );
</ins><span class="cx" style="display: block; padding: 0 10px"> 
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                        // Default data
-            $data = array(
-                   'Mentors' => array(
-                    'l10n' => array(
-                        'selectLabel' => esc_html__( 'Available mentors', 'wordcamporg' ),
-                        'confirm'     => esc_html__( 'Update Mentor field contents?', 'wordcamporg' ),
-                    ),
-                   )
-            );
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                         // Only include mentor data if the Mentor username field is editable
+                               if ( current_user_can( 'wordcamp_manage_mentors' ) ) {
+                                       $data['Mentors']['data'] = Mentors_Dashboard\get_all_mentor_data();
+                               }
</ins><span class="cx" style="display: block; padding: 0 10px"> 
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-            // Only include mentor data if the Mentor username field is editable
-            if ( current_user_can( 'wordcamp_manage_mentors' ) ) {
-                $data['Mentors']['data'] = Mentors_Dashboard\get_all_mentor_data();
-            }
-
-                       wp_localize_script(
-                               'wcpt-admin',
-                               'wordCampPostType',
-                               $data
-                       );
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                         wp_localize_script(
+                                       'wcpt-admin',
+                                       'wordCampPostType',
+                                       $data
+                               );
+                       }
</ins><span class="cx" style="display: block; padding: 0 10px">                 }
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                wp_enqueue_script( 'select2' );
-       }
</del><span class="cx" style="display: block; padding: 0 10px"> 
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-        function admin_styles() {
-               if ( get_post_type() == WCPT_POST_TYPE_ID ) {
-                       wp_enqueue_style( 'jquery-ui' );
-                       wp_enqueue_style( 'wp-datepicker-skins' );
-               }
-               wp_enqueue_style( 'select2' );
-       }
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+         /**
+                * admin_head ()
+                *
+                * Add some general styling to the admin area
+                */
+               function admin_head() {
+                       if ( ! empty( $_GET['post_type'] ) && $_GET['post_type'] == WCPT_POST_TYPE_ID ) : ?>
</ins><span class="cx" style="display: block; padding: 0 10px"> 
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-        /**
-        * admin_head ()
-        *
-        * Add some general styling to the admin area
-        */
-       function admin_head() {
-               if ( !empty( $_GET['post_type'] ) && $_GET['post_type'] == WCPT_POST_TYPE_ID ) : ?>
-
</del><span class="cx" style="display: block; padding: 0 10px">                         .column-title { width: 40%; }
</span><span class="cx" style="display: block; padding: 0 10px">                        .column-wcpt_location, .column-wcpt_date, column-wcpt_organizer { white-space: nowrap; }
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                <?php endif;
-       }
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                         <?php
+               endif;
+               }
</ins><span class="cx" style="display: block; padding: 0 10px"> 
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-        /**
-        * user_profile_update ()
-        *
-        * Responsible for showing additional profile options and settings
-        *
-        * @todo Everything
-        */
-       function user_profile_update( $user_id ) {
-               if ( !wcpt_has_access() )
-                       return false;
-       }
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+         /**
+                * user_profile_update ()
+                *
+                * Responsible for showing additional profile options and settings
+                *
+                * @todo Everything
+                */
+               function user_profile_update( $user_id ) {
+                       if ( ! wcpt_has_access() ) {
+                               return false;
+                       }
+               }
</ins><span class="cx" style="display: block; padding: 0 10px"> 
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-        /**
-        * user_profile_wordcamp ()
-        *
-        * Responsible for saving additional profile options and settings
-        *
-        * @todo Everything
-        */
-       function user_profile_wordcamp( $profileuser ) {
-               if ( !wcpt_has_access() )
-                       return false;
-               ?>
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+         /**
+                * user_profile_wordcamp ()
+                *
+                * Responsible for saving additional profile options and settings
+                *
+                * @todo Everything
+                */
+               function user_profile_wordcamp( $profileuser ) {
+                       if ( ! wcpt_has_access() ) {
+                               return false;
+                       }
+                       ?>
</ins><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">                <h3><?php _e( 'WordCamps', 'wcpt' ); ?></h3>
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -656,516 +530,501 @@
</span><span class="cx" style="display: block; padding: 0 10px">                        </tr>
</span><span class="cx" style="display: block; padding: 0 10px">                </table>
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                <?php
-       }
-
-       /**
-        * column_headers ()
-        *
-        * Manage the column headers
-        *
-        * @param array $columns
-        * @return array $columns
-        */
-       function column_headers( $columns ) {
-               $columns = array (
-                       'cb'               => '<input type="checkbox" />',
-                       'title'            => __( 'Title', 'wcpt' ),
-                       //'wcpt_location'    => __( 'Location', 'wcpt' ),
-                       'wcpt_date'        => __( 'Date',      'wcpt' ),
-                       'wcpt_organizer'   => __( 'Organizer', 'wcpt' ),
-                       'wcpt_venue'       => __( 'Venue',     'wcpt' ),
-                       'date'             => __( 'Status',    'wcpt' )
-               );
-               return $columns;
-       }
-
-       /**
-        * Display the status of a WordCamp post
-        *
-        * @param array $states
-        *
-        * @return array
-        */
-       public function display_post_states( $states ) {
-               global $post;
-
-               if ( $post->post_type != WCPT_POST_TYPE_ID ) {
-                       return $states;
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                 <?php
</ins><span class="cx" style="display: block; padding: 0 10px">                 }
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                $status = get_post_status_object( $post->post_status );
-               if ( get_query_var( 'post_status' ) != $post->post_status ) {
-                       $states[ $status->name ] = $status->label;
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+         /**
+                * column_headers ()
+                *
+                * Manage the column headers
+                *
+                * @param array $columns
+                * @return array $columns
+                */
+               function column_headers( $columns ) {
+                       $columns = array(
+                               'cb'             => '<input type="checkbox" />',
+                               'title'          => __( 'Title', 'wcpt' ),
+                               // 'wcpt_location'    => __( 'Location', 'wcpt' ),
+                               'wcpt_date'      => __( 'Date', 'wcpt' ),
+                               'wcpt_organizer' => __( 'Organizer', 'wcpt' ),
+                               'wcpt_venue'     => __( 'Venue', 'wcpt' ),
+                               'date'           => __( 'Status', 'wcpt' ),
+                       );
+                       return $columns;
</ins><span class="cx" style="display: block; padding: 0 10px">                 }
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                return $states;
-       }
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+         /**
+                * column_data ( $column, $post_id )
+                *
+                * Print extra columns
+                *
+                * @param string $column
+                * @param int    $post_id
+                */
+               function column_data( $column, $post_id ) {
+                       if ( $_GET['post_type'] !== WCPT_POST_TYPE_ID ) {
+                               return $column;
+                       }
</ins><span class="cx" style="display: block; padding: 0 10px"> 
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-        /**
-        * column_data ( $column, $post_id )
-        *
-        * Print extra columns
-        *
-        * @param string $column
-        * @param int $post_id
-        */
-       function column_data( $column, $post_id ) {
-               if ( $_GET['post_type'] !== WCPT_POST_TYPE_ID )
-                       return $column;
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                 switch ( $column ) {
+                               case 'wcpt_location':
+                                       echo wcpt_get_wordcamp_location() ? wcpt_get_wordcamp_location() : __( 'No Location', 'wcpt' );
+                                       break;
</ins><span class="cx" style="display: block; padding: 0 10px"> 
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                switch ( $column ) {
-                       case 'wcpt_location' :
-                               echo wcpt_get_wordcamp_location() ? wcpt_get_wordcamp_location() : __( 'No Location', 'wcpt' );
-                               break;
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                         case 'wcpt_date':
+                                       // Has a start date
+                                       if ( $start = wcpt_get_wordcamp_start_date() ) {
</ins><span class="cx" style="display: block; padding: 0 10px"> 
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                        case 'wcpt_date' :
-                               // Has a start date
-                               if ( $start = wcpt_get_wordcamp_start_date() ) {
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                                         // Has an end date
+                                               if ( $end = wcpt_get_wordcamp_end_date() ) {
+                                                       $string_date = sprintf( __( 'Start: %1$s<br />End: %2$s', 'wcpt' ), $start, $end );
</ins><span class="cx" style="display: block; padding: 0 10px"> 
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                                        // Has an end date
-                                       if ( $end = wcpt_get_wordcamp_end_date() ) {
-                                               $string_date = sprintf( __( 'Start: %1$s<br />End: %2$s', 'wcpt' ), $start, $end );
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                                                 // No end date
+                                               } else {
+                                                       $string_date = sprintf( __( 'Start: %1$s', 'wcpt' ), $start );
+                                               }
</ins><span class="cx" style="display: block; padding: 0 10px"> 
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                                        // No end date
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                                         // No date
</ins><span class="cx" style="display: block; padding: 0 10px">                                         } else {
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                                                $string_date = sprintf( __( 'Start: %1$s', 'wcpt' ), $start );
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                                         $string_date = __( 'No Date', 'wcpt' );
</ins><span class="cx" style="display: block; padding: 0 10px">                                         }
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                                // No date
-                               } else {
-                                       $string_date = __( 'No Date', 'wcpt' );
-                               }
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                                 echo $string_date;
+                                       break;
</ins><span class="cx" style="display: block; padding: 0 10px"> 
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                                echo $string_date;
-                               break;
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                         case 'wcpt_organizer':
+                                       echo wcpt_get_wordcamp_organizer_name() ? wcpt_get_wordcamp_organizer_name() : __( 'No Organizer', 'wcpt' );
+                                       break;
</ins><span class="cx" style="display: block; padding: 0 10px"> 
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                        case 'wcpt_organizer' :
-                               echo wcpt_get_wordcamp_organizer_name() ? wcpt_get_wordcamp_organizer_name() : __( 'No Organizer', 'wcpt' );
-                               break;
-
-                       case 'wcpt_venue' :
-                               echo wcpt_get_wordcamp_venue_name() ? wcpt_get_wordcamp_venue_name() : __( 'No Venue', 'wcpt' );
-                               break;
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                         case 'wcpt_venue':
+                                       echo wcpt_get_wordcamp_venue_name() ? wcpt_get_wordcamp_venue_name() : __( 'No Venue', 'wcpt' );
+                                       break;
+                       }
</ins><span class="cx" style="display: block; padding: 0 10px">                 }
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-        }
</del><span class="cx" style="display: block; padding: 0 10px"> 
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-        /**
-        * post_row_actions ( $actions, $post )
-        *
-        * Remove the quick-edit action link and display the description under
-        *
-        * @param array $actions
-        * @param array $post
-        * @return array $actions
-        */
-       function post_row_actions( $actions, $post ) {
-               if ( WCPT_POST_TYPE_ID == $post->post_type ) {
-                       unset( $actions['inline hide-if-no-js'] );
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+         /**
+                * post_row_actions ( $actions, $post )
+                *
+                * Remove the quick-edit action link and display the description under
+                *
+                * @param array $actions
+                * @param array $post
+                * @return array $actions
+                */
+               function post_row_actions( $actions, $post ) {
+                       if ( WCPT_POST_TYPE_ID == $post->post_type ) {
+                               unset( $actions['inline hide-if-no-js'] );
</ins><span class="cx" style="display: block; padding: 0 10px"> 
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                        $wc = array();
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                         $wc = array();
</ins><span class="cx" style="display: block; padding: 0 10px"> 
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                        if ( $wc_location = wcpt_get_wordcamp_location() )
-                               $wc['location'] = $wc_location;
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                         if ( $wc_location = wcpt_get_wordcamp_location() ) {
+                                       $wc['location'] = $wc_location;
+                               }
</ins><span class="cx" style="display: block; padding: 0 10px"> 
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                        if ( $wc_url = make_clickable( wcpt_get_wordcamp_url() ) )
-                               $wc['url'] = $wc_url;
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                         if ( $wc_url = make_clickable( wcpt_get_wordcamp_url() ) ) {
+                                       $wc['url'] = $wc_url;
+                               }
</ins><span class="cx" style="display: block; padding: 0 10px"> 
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                        echo implode( ' - ', (array) $wc );
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                         echo implode( ' - ', (array) $wc );
+                       }
+
+                       return $actions;
</ins><span class="cx" style="display: block; padding: 0 10px">                 }
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                return $actions;
-       }
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+         /**
+                * Trigger actions related to WordCamps being scheduled.
+                *
+                * @param string  $new_status
+                * @param string  $old_status
+                * @param WP_Post $post
+                */
+               public function trigger_schedule_actions( $new_status, $old_status, $post ) {
+                       if ( empty( $post->post_type ) || WCPT_POST_TYPE_ID != $post->post_type ) {
+                               return;
+                       }
</ins><span class="cx" style="display: block; padding: 0 10px"> 
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-        /**
-        * Trigger actions related to WordCamps being scheduled.
-        *
-        * @param string $new_status
-        * @param string $old_status
-        * @param WP_Post $post
-        */
-       public function trigger_schedule_actions( $new_status, $old_status, $post ) {
-               if ( empty( $post->post_type ) || WCPT_POST_TYPE_ID != $post->post_type ) {
-                       return;
-               }
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                 if ( $new_status == $old_status ) {
+                               return;
+                       }
</ins><span class="cx" style="display: block; padding: 0 10px"> 
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                if ( $new_status == $old_status ) {
-                       return;
-               }
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                 if ( 'wcpt-pre-planning' == $new_status ) {
+                               do_action( 'wcpt_approved_for_pre_planning', $post );
+                       } elseif ( $old_status == 'wcpt-needs-schedule' && $new_status == 'wcpt-scheduled' ) {
+                               do_action( 'wcpt_added_to_final_schedule', $post );
+                       }
</ins><span class="cx" style="display: block; padding: 0 10px"> 
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                if ( 'wcpt-pre-planning' == $new_status ) {
-                       do_action( 'wcpt_approved_for_pre_planning', $post );
-               } elseif ( $old_status == 'wcpt-needs-schedule' && $new_status == 'wcpt-scheduled' ) {
-                       do_action( 'wcpt_added_to_final_schedule', $post );
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                 // todo add new triggers - which ones?
</ins><span class="cx" style="display: block; padding: 0 10px">                 }
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                // todo add new triggers - which ones?
-       }
</del><span class="cx" style="display: block; padding: 0 10px"> 
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-        /**
-        * Log when the post status changes
-        *
-        * @param string  $new_status
-        * @param string  $old_status
-        * @param WP_Post $post
-        */
-       public function log_status_changes( $new_status, $old_status, $post ) {
-               if ( $new_status === $old_status || $new_status == 'auto-draft' ) {
-                       return;
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+         /**
+                * Add the lead organizer to Central when a WordCamp application is accepted.
+                *
+                * Adding the lead organizer to Central allows them to enter all the `wordcamp`
+                * meta info themselves, and also post updates to the Central blog.
+                *
+                * @param WP_Post $post
+                */
+               public function add_organizer_to_central( $post ) {
+                       $lead_organizer = get_user_by( 'login', $_POST['wcpt_wordpress_org_username'] );
+
+                       if ( $lead_organizer && add_user_to_blog( get_current_blog_id(), $lead_organizer->ID, 'contributor' ) ) {
+                               do_action( 'wcor_organizer_added_to_central', $post );
+                       }
</ins><span class="cx" style="display: block; padding: 0 10px">                 }
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                if ( empty( $post->post_type ) || WCPT_POST_TYPE_ID != $post->post_type ) {
-                       return;
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+         /**
+                * Record when the WordCamp was added to the planning schedule.
+                *
+                * This is used by the Organizer Reminders plugin to send automated e-mails at certain points after the camp
+                * has been added to the planning schedule.
+                *
+                * @param WP_Post $wordcamp
+                */
+               public function mark_date_added_to_planning_schedule( $wordcamp ) {
+                       update_post_meta( $wordcamp->ID, '_timestamp_added_to_planning_schedule', time() );
</ins><span class="cx" style="display: block; padding: 0 10px">                 }
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                $old_status = get_post_status_object( $old_status );
-               $new_status = get_post_status_object( $new_status );
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+         /**
+                * Enforce a valid post status for WordCamps.
+                *
+                * @param array $post_data
+                * @param array $post_data_raw
+                * @return array
+                */
+               public function enforce_post_status( $post_data, $post_data_raw ) {
+                       if ( $post_data['post_type'] != WCPT_POST_TYPE_ID || empty( $_POST['post_ID'] ) ) {
+                               return $post_data;
+                       }
</ins><span class="cx" style="display: block; padding: 0 10px"> 
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                add_post_meta( $post->ID, '_status_change', array(
-                       'timestamp' => time(),
-                       'user_id'   => get_current_user_id(),
-                       'message'   => sprintf( '%s &rarr; %s', $old_status->label, $new_status->label ),
-               ) );
-       }
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                 $post = get_post( $_POST['post_ID'] );
+                       if ( ! $post ) {
+                               return $post_data;
+                       }
</ins><span class="cx" style="display: block; padding: 0 10px"> 
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-        /**
-        * Add the lead organizer to Central when a WordCamp application is accepted.
-        *
-        * Adding the lead organizer to Central allows them to enter all the `wordcamp`
-        * meta info themselves, and also post updates to the Central blog.
-        *
-        * @param WP_Post $post
-        */
-       public function add_organizer_to_central( $post ) {
-               $lead_organizer = get_user_by( 'login', $_POST['wcpt_wordpress_org_username'] );
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                 if ( ! empty( $post_data['post_status'] ) ) {
+                               $wcpt = get_post_type_object( WCPT_POST_TYPE_ID );
</ins><span class="cx" style="display: block; padding: 0 10px"> 
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                if ( $lead_organizer && add_user_to_blog( get_current_blog_id(), $lead_organizer->ID, 'contributor' ) ) {
-                       do_action( 'wcor_organizer_added_to_central', $post );
-               }
-       }
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                         // Only WordCamp Wranglers can change WordCamp statuses.
+                               if ( ! current_user_can( 'wordcamp_wrangle_wordcamps' ) ) {
+                                       $post_data['post_status'] = $post->post_status;
+                               }
</ins><span class="cx" style="display: block; padding: 0 10px"> 
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-        /**
-        * Record when the WordCamp was added to the planning schedule.
-        *
-        * This is used by the Organizer Reminders plugin to send automated e-mails at certain points after the camp
-        * has been added to the planning schedule.
-        *
-        * @param WP_Post $wordcamp
-        */
-       public function mark_date_added_to_planning_schedule( $wordcamp ) {
-               update_post_meta( $wordcamp->ID, '_timestamp_added_to_planning_schedule', time() );
-       }
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                         // Enforce a valid status.
+                               $statuses = array_keys( WordCamp_Loader::get_post_statuses() );
+                               $statuses = array_merge( $statuses, array( 'trash' ) );
</ins><span class="cx" style="display: block; padding: 0 10px"> 
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-        /**
-        * Enforce a valid post status for WordCamps.
-        *
-        * @param array $post_data
-        * @param array $post_data_raw
-        * @return array
-        */
-       public function enforce_post_status( $post_data, $post_data_raw ) {
-               if ( $post_data['post_type'] != WCPT_POST_TYPE_ID || empty( $_POST['post_ID'] ) ) {
-                       return $post_data;
-               }
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                         if ( ! in_array( $post_data['post_status'], $statuses ) ) {
+                                       $post_data['post_status'] = $statuses[0];
+                               }
+                       }
</ins><span class="cx" style="display: block; padding: 0 10px"> 
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                $post = get_post( $_POST['post_ID'] );
-               if ( ! $post ) {
</del><span class="cx" style="display: block; padding: 0 10px">                         return $post_data;
</span><span class="cx" style="display: block; padding: 0 10px">                }
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                if ( ! empty( $post_data['post_status'] ) ) {
-                       $wcpt = get_post_type_object( WCPT_POST_TYPE_ID );
-
-                       // Only WordCamp Wranglers can change WordCamp statuses.
-                       if ( ! current_user_can( 'wordcamp_wrangle_wordcamps' ) ) {
-                               $post_data['post_status'] = $post->post_status;
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+         /**
+                * Prevent WordCamp posts from being set to pending or published until all the required fields are completed.
+                *
+                * @param array $post_data
+                * @param array $post_data_raw
+                * @return array
+                */
+               public function require_complete_meta_to_publish_wordcamp( $post_data, $post_data_raw ) {
+                       if ( WCPT_POST_TYPE_ID != $post_data['post_type'] ) {
+                               return $post_data;
</ins><span class="cx" style="display: block; padding: 0 10px">                         }
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                        // Enforce a valid status.
-                       $statuses = array_keys( WordCamp_Loader::get_post_statuses() );
-                       $statuses = array_merge( $statuses, array( 'trash' ) );
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                 // The ID of the last site that was created before this rule went into effect, so that we don't apply the rule retroactively.
+                       $min_site_id = apply_filters( 'wcpt_require_complete_meta_min_site_id', '2416297' );
</ins><span class="cx" style="display: block; padding: 0 10px"> 
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                        if ( ! in_array( $post_data['post_status'], $statuses ) ) {
-                               $post_data['post_status'] = $statuses[0];
-                       }
-               }
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                 $required_needs_site_fields = $this->get_required_fields( 'needs-site' );
+                       $required_scheduled_fields  = $this->get_required_fields( 'scheduled' );
</ins><span class="cx" style="display: block; padding: 0 10px"> 
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                return $post_data;
-       }
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                 // Check pending posts
+                       if ( 'wcpt-needs-site' == $post_data['post_status'] && absint( $_POST['post_ID'] ) > $min_site_id ) {
+                               foreach ( $required_needs_site_fields as $field ) {
+                                       $value = $_POST[ wcpt_key_to_str( $field, 'wcpt_' ) ];
</ins><span class="cx" style="display: block; padding: 0 10px"> 
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-        /**
-        * Prevent WordCamp posts from being set to pending or published until all the required fields are completed.
-        *
-        * @param array $post_data
-        * @param array $post_data_raw
-        * @return array
-        */
-       public function require_complete_meta_to_publish_wordcamp( $post_data, $post_data_raw ) {
-               if ( WCPT_POST_TYPE_ID != $post_data['post_type'] ) {
-                       return $post_data;
-               }
-
-               // The ID of the last site that was created before this rule went into effect, so that we don't apply the rule retroactively.
-               $min_site_id = apply_filters( 'wcpt_require_complete_meta_min_site_id', '2416297' );
-
-               $required_needs_site_fields = $this->get_required_fields( 'needs-site' );
-               $required_scheduled_fields  = $this->get_required_fields( 'scheduled' );
-
-               // Check pending posts
-               if ( 'wcpt-needs-site' == $post_data['post_status'] && absint( $_POST['post_ID'] ) > $min_site_id ) {
-                       foreach( $required_needs_site_fields as $field ) {
-                               $value = $_POST[ wcpt_key_to_str( $field, 'wcpt_' ) ];
-
-                               if ( empty( $value ) || 'null' == $value ) {
-                                       $post_data['post_status']     = 'wcpt-needs-email';
-                                       $this->active_admin_notices[] = 1;
-                                       break;
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                                 if ( empty( $value ) || 'null' == $value ) {
+                                               $post_data['post_status']     = 'wcpt-needs-email';
+                                               $this->active_admin_notices[] = 1;
+                                               break;
+                                       }
</ins><span class="cx" style="display: block; padding: 0 10px">                                 }
</span><span class="cx" style="display: block; padding: 0 10px">                        }
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                }
</del><span class="cx" style="display: block; padding: 0 10px"> 
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                // Check published posts
-               if ( 'wcpt-scheduled' == $post_data['post_status'] && isset( $_POST['post_ID'] ) && absint( $_POST['post_ID'] ) > $min_site_id ) {
-                       foreach( $required_scheduled_fields as $field ) {
-                               $value = $_POST[ wcpt_key_to_str( $field, 'wcpt_' ) ];
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                 // Check published posts
+                       if ( 'wcpt-scheduled' == $post_data['post_status'] && isset( $_POST['post_ID'] ) && absint( $_POST['post_ID'] ) > $min_site_id ) {
+                               foreach ( $required_scheduled_fields as $field ) {
+                                       $value = $_POST[ wcpt_key_to_str( $field, 'wcpt_' ) ];
</ins><span class="cx" style="display: block; padding: 0 10px"> 
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                                if ( empty( $value ) || 'null' == $value ) {
-                                       $post_data['post_status']     = 'wcpt-needs-schedule';
-                                       $this->active_admin_notices[] = 3;
-                                       break;
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                                 if ( empty( $value ) || 'null' == $value ) {
+                                               $post_data['post_status']     = 'wcpt-needs-schedule';
+                                               $this->active_admin_notices[] = 3;
+                                               break;
+                                       }
</ins><span class="cx" style="display: block; padding: 0 10px">                                 }
</span><span class="cx" style="display: block; padding: 0 10px">                        }
</span><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+
+                       return $post_data;
</ins><span class="cx" style="display: block; padding: 0 10px">                 }
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                return $post_data;
-       }
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+         /**
+                * Get a list of fields required to move to a certain post status
+                *
+                * @param string $status 'needs-site' | 'scheduled' | 'any'
+                *
+                * @return array
+                */
+               public static function get_required_fields( $status ) {
+                       $needs_site = array( 'E-mail Address' );
</ins><span class="cx" style="display: block; padding: 0 10px"> 
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-        /**
-        * Get a list of fields required to move to a certain post status
-        *
-        * @param string $status 'needs-site' | 'scheduled' | 'any'
-        *
-        * @return array
-        */
-       public static function get_required_fields( $status ) {
-               $needs_site = array( 'E-mail Address' );
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                 $scheduled = array(
+                               // WordCamp
+                               'Start Date (YYYY-mm-dd)',
+                               'Location',
+                               'URL',
+                               'E-mail Address',
+                               'Number of Anticipated Attendees',
+                               'Multi-Event Sponsor Region',
</ins><span class="cx" style="display: block; padding: 0 10px"> 
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                $scheduled = array(
-                       // WordCamp
-                       'Start Date (YYYY-mm-dd)',
-                       'Location',
-                       'URL',
-                       'E-mail Address',
-                       'Number of Anticipated Attendees',
-                       'Multi-Event Sponsor Region',
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                         // Organizing Team
+                               'Organizer Name',
+                               'WordPress.org Username',
+                               'Email Address',
+                               'Telephone',
+                               'Mailing Address',
+                               'Sponsor Wrangler Name',
+                               'Sponsor Wrangler E-mail Address',
+                               'Budget Wrangler Name',
+                               'Budget Wrangler E-mail Address',
</ins><span class="cx" style="display: block; padding: 0 10px"> 
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                        // Organizing Team
-                       'Organizer Name',
-                       'WordPress.org Username',
-                       'Email Address',
-                       'Telephone',
-                       'Mailing Address',
-                       'Sponsor Wrangler Name',
-                       'Sponsor Wrangler E-mail Address',
-                       'Budget Wrangler Name',
-                       'Budget Wrangler E-mail Address',
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                         // Venue
+                               'Physical Address', // used to build stats
+                       );
</ins><span class="cx" style="display: block; padding: 0 10px"> 
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                        // Venue
-                       'Physical Address' // used to build stats
-               );
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                 switch ( $status ) {
+                               case 'needs-site':
+                                       $required_fields = $needs_site;
+                                       break;
</ins><span class="cx" style="display: block; padding: 0 10px"> 
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                switch ( $status ) {
-                       case 'needs-site':
-                               $required_fields = $needs_site;
-                               break;
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                         case 'scheduled':
+                                       $required_fields = $scheduled;
+                                       break;
</ins><span class="cx" style="display: block; padding: 0 10px"> 
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                        case 'scheduled':
-                               $required_fields = $scheduled;
-                               break;
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                         case 'any':
+                               default:
+                                       $required_fields = array_merge( $needs_site, $scheduled );
+                                       break;
+                       }
</ins><span class="cx" style="display: block; padding: 0 10px"> 
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                        case 'any':
-                       default:
-                               $required_fields = array_merge( $needs_site, $scheduled );
-                               break;
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                 return $required_fields;
</ins><span class="cx" style="display: block; padding: 0 10px">                 }
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                return $required_fields;
-       }
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+         public static function get_protected_fields() {
+                       $protected_fields = array();
</ins><span class="cx" style="display: block; padding: 0 10px"> 
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-        /**
-        * Check if a field should be readonly, based on the current user's caps.
-        *
-        * @param string $field_name The field to check.
-        *
-        * @return bool
-        */
-       public static function is_protected_field( $field_name ) {
-               $protected_fields = array();
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                 if ( ! current_user_can( 'wordcamp_manage_mentors' ) ) {
+                               $protected_fields = array_merge(
+                                       $protected_fields, array(
+                                               'Mentor WordPress.org User Name',
+                                               'Mentor Name',
+                                               'Mentor E-mail Address',
+                                       )
+                               );
+                       }
</ins><span class="cx" style="display: block; padding: 0 10px"> 
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                if ( ! current_user_can( 'wordcamp_manage_mentors' ) ) {
-                       $protected_fields = array_merge( $protected_fields, array(
-                               'Mentor WordPress.org User Name',
-                               'Mentor Name',
-                               'Mentor E-mail Address',
-                       ) );
-               }
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                 if ( ! current_user_can( 'wordcamp_wrangle_wordcamps' ) ) {
+                               $protected_fields = array_merge(
+                                       $protected_fields, array(
+                                               'Multi-Event Sponsor Region',
+                                       )
+                               );
+                       }
</ins><span class="cx" style="display: block; padding: 0 10px"> 
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                if ( ! current_user_can( 'wordcamp_wrangle_wordcamps' ) ) {
-                       $protected_fields = array_merge( $protected_fields, array(
-                               'Multi-Event Sponsor Region',
-                       ) );
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                 return $protected_fields;
</ins><span class="cx" style="display: block; padding: 0 10px">                 }
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                return in_array( $field_name, $protected_fields );
-       }
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+         /**
+                * Check if a field should be readonly, based on the current user's caps.
+                *
+                * @param string $field_name The field to check.
+                *
+                * @return bool
+                */
+               public static function is_protected_field( $field_name ) {
</ins><span class="cx" style="display: block; padding: 0 10px"> 
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-        /**
-        * Add our custom admin notice keys to the redirect URL.
-        *
-        * Any member can add a key to $this->active_admin_notices to signify that the corresponding message should
-        * be shown when the redirect finished. When it does, print_admin_notices() will examine the URL and create
-        * a notice with the message that corresponds to the key.
-        *
-        * @param $location
-        * @param $post_id
-        * @return string
-        */
-       public function add_admin_notices_to_redirect_url( $location, $post_id ) {
-               if ( $this->active_admin_notices ) {
-                       $location = add_query_arg( 'wcpt_messages', implode( ',', $this->active_admin_notices ), $location );
-               }
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                 $protected_fields = self::get_protected_fields();
</ins><span class="cx" style="display: block; padding: 0 10px"> 
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                // Don't show conflicting messages like 'Post submitted.'
-               if ( in_array( 1, $this->active_admin_notices ) && false !== strpos( $location, 'message=8' ) ) {
-                       $location = remove_query_arg( 'message', $location );
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                 return in_array( $field_name, $protected_fields );
</ins><span class="cx" style="display: block; padding: 0 10px">                 }
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                return $location;
-       }
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+         /**
+                * Add our custom admin notice keys to the redirect URL.
+                *
+                * Any member can add a key to $this->active_admin_notices to signify that the corresponding message should
+                * be shown when the redirect finished. When it does, print_admin_notices() will examine the URL and create
+                * a notice with the message that corresponds to the key.
+                *
+                * @param $location
+                * @param $post_id
+                * @return string
+                */
+               public function add_admin_notices_to_redirect_url( $location, $post_id ) {
+                       if ( $this->active_admin_notices ) {
+                               $location = add_query_arg( 'wcpt_messages', implode( ',', $this->active_admin_notices ), $location );
+                       }
</ins><span class="cx" style="display: block; padding: 0 10px"> 
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-        /**
-        * Create admin notices for messages that were passed in the URL.
-        *
-        * Any member can add a key to $this->active_admin_notices to signify that the corresponding message should
-        * be shown when the redirect finished. add_admin_notices_to_redirect_url() adds those keys to the redirect
-        * url, and this function examines the URL and create a notice with the message that corresponds to the key.
-        *
-        * $notices[key]['type'] should equal 'error' or 'updated'.
-        */
-       public function print_admin_notices() {
-               global $post;
-               $screen = get_current_screen();
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                 // Don't show conflicting messages like 'Post submitted.'
+                       if ( in_array( 1, $this->active_admin_notices ) && false !== strpos( $location, 'message=8' ) ) {
+                               $location = remove_query_arg( 'message', $location );
+                       }
</ins><span class="cx" style="display: block; padding: 0 10px"> 
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                if ( empty( $post->post_type ) || WCPT_POST_TYPE_ID != $post->post_type || 'post' !== $screen->base ) {
-                       return;
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                 return $location;
</ins><span class="cx" style="display: block; padding: 0 10px">                 }
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                $notices = array(
-                       1 => array(
-                               'type'   => 'error',
-                               'notice' => sprintf(
-                                       __( 'This WordCamp cannot be moved to Needs Site until all of its required metadata is filled in: %s.', 'wordcamporg' ),
-                                       implode( ', ', $this->get_required_fields( 'needs-site' ) )
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+         /**
+                * Create admin notices for messages that were passed in the URL.
+                *
+                * Any member can add a key to $this->active_admin_notices to signify that the corresponding message should
+                * be shown when the redirect finished. add_admin_notices_to_redirect_url() adds those keys to the redirect
+                * url, and this function examines the URL and create a notice with the message that corresponds to the key.
+                *
+                * $notices[key]['type'] should equal 'error' or 'updated'.
+                */
+               public function print_admin_notices() {
+                       global $post;
+                       $screen = get_current_screen();
+
+                       if ( empty( $post->post_type ) || WCPT_POST_TYPE_ID != $post->post_type || 'post' !== $screen->base ) {
+                               return;
+                       }
+
+                       $notices = array(
+                               1 => array(
+                                       'type'   => 'error',
+                                       'notice' => sprintf(
+                                               __( 'This WordCamp cannot be moved to Needs Site until all of its required metadata is filled in: %s.', 'wordcamporg' ),
+                                               implode( ', ', $this->get_required_fields( 'needs-site' ) )
+                                       ),
</ins><span class="cx" style="display: block; padding: 0 10px">                                 ),
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                        ),
</del><span class="cx" style="display: block; padding: 0 10px"> 
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                        3 => array(
-                               'type'   => 'error',
-                               'notice' => sprintf(
-                                       __( 'This WordCamp cannot be added to the schedule until all of its required metadata is filled in: %s.', 'wordcamporg' ),
-                                       implode( ', ', $this->get_required_fields( 'scheduled' ) )
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                         3 => array(
+                                       'type'   => 'error',
+                                       'notice' => sprintf(
+                                               __( 'This WordCamp cannot be added to the schedule until all of its required metadata is filled in: %s.', 'wordcamporg' ),
+                                               implode( ', ', $this->get_required_fields( 'scheduled' ) )
+                                       ),
</ins><span class="cx" style="display: block; padding: 0 10px">                                 ),
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                        ),
</del><span class="cx" style="display: block; padding: 0 10px"> 
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                        4 => array(
-                               'type'   => 'error',
-                               'notice' => __( 'The physical address could not be geocoded, which prevents the camp from showing up in the Events Widget. Please tweak the address so that Google can parse it.', 'wordcamporg' )
-                       ),
-               );
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                         4 => array(
+                                       'type'   => 'error',
+                                       'notice' => __( 'The physical address could not be geocoded, which prevents the camp from showing up in the Events Widget. Please tweak the address so that Google can parse it.', 'wordcamporg' ),
+                               ),
+                       );
</ins><span class="cx" style="display: block; padding: 0 10px"> 
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                // Show this error permenantly, not just after updating.
-               if ( ! empty( $post->{'Physical Address'} ) && empty( get_post_meta( $post->ID, '_venue_coordinates', true ) ) ) {
-                       $_REQUEST['wcpt_messages'] = empty( $_REQUEST['wcpt_messages'] ) ? '4' : $_REQUEST['wcpt_messages'] . ',4';
-               }
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                 // Show this error permenantly, not just after updating.
+                       if ( ! empty( $post->{'Physical Address'} ) && empty( get_post_meta( $post->ID, '_venue_coordinates', true ) ) ) {
+                               $_REQUEST['wcpt_messages'] = empty( $_REQUEST['wcpt_messages'] ) ? '4' : $_REQUEST['wcpt_messages'] . ',4';
+                       }
</ins><span class="cx" style="display: block; padding: 0 10px"> 
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                if ( ! empty( $_REQUEST['wcpt_messages'] ) ) {
-                       $active_notices = explode( ',', $_REQUEST['wcpt_messages'] );
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                 if ( ! empty( $_REQUEST['wcpt_messages'] ) ) {
+                               $active_notices = explode( ',', $_REQUEST['wcpt_messages'] );
</ins><span class="cx" style="display: block; padding: 0 10px"> 
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                        foreach ( $active_notices as $notice_key ) {
-                               if ( isset( $notices[ $notice_key ] ) ) {
-                                       ?>
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                         foreach ( $active_notices as $notice_key ) {
+                                       if ( isset( $notices[ $notice_key ] ) ) {
+                                               ?>
</ins><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">                                        <div class="<?php echo esc_attr( $notices[ $notice_key ]['type'] ); ?>">
</span><span class="cx" style="display: block; padding: 0 10px">                                                <p><?php echo wp_kses( $notices[ $notice_key ]['notice'], wp_kses_allowed_html( 'post' ) ); ?></p>
</span><span class="cx" style="display: block; padding: 0 10px">                                        </div>
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                                        <?php
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                                         <?php
+                                       }
</ins><span class="cx" style="display: block; padding: 0 10px">                                 }
</span><span class="cx" style="display: block; padding: 0 10px">                        }
</span><span class="cx" style="display: block; padding: 0 10px">                }
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-        }
</del><span class="cx" style="display: block; padding: 0 10px"> 
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-        /**
-        * Render the WordCamp status meta box.
-        */
-       public function metabox_status( $post ) {
-               require_once( WCPT_DIR . 'views/wordcamp/metabox-status.php' );
-       }
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+         /**
+                * Get list of valid status transitions from given status
+                *
+                * @param string $status
+                *
+                * @return array
+                */
+               public static function get_valid_status_transitions( $status ) {
+                       return WordCamp_Loader::get_valid_status_transitions( $status );
+               }
</ins><span class="cx" style="display: block; padding: 0 10px"> 
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-        /**
-        * Render the WordCamp status meta box.
-        */
-       public function original_application_metabox( $post ) {
-               $application_data = get_post_meta( $post->ID, '_application_data', true );
-               require_once( WCPT_DIR . 'views/wordcamp/metabox-original-application.php' );
-       }
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+         /**
+                * Get list of all available post statuses.
+                *
+                * @return array
+                */
+               public static function get_post_statuses() {
+                       return WordCamp_Loader::get_post_statuses();
+               }
</ins><span class="cx" style="display: block; padding: 0 10px"> 
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-        /**
-        * Schedule cron jobs
-        */
-       public function schedule_cron_jobs() {
-               if ( wp_next_scheduled( 'wcpt_close_wordcamps_after_event' ) ) {
-                       return;
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+         /**
+                * Capability required to edit wordcamp posts
+                *
+                * @return string
+                */
+               public static function get_edit_capability() {
+                       return 'wordcamp_wrangle_wordcamps';
</ins><span class="cx" style="display: block; padding: 0 10px">                 }
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                wp_schedule_event( current_time( 'timestamp' ), 'hourly', 'wcpt_close_wordcamps_after_event' );
-       }
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+         /**
+                * Schedule cron jobs
+                */
+               public function schedule_cron_jobs() {
+                       if ( wp_next_scheduled( 'wcpt_close_wordcamps_after_event' ) ) {
+                               return;
+                       }
</ins><span class="cx" style="display: block; padding: 0 10px"> 
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-        /**
-        * Set WordCamp posts to the Closed status after the event is over
-        */
-       public function close_wordcamps_after_event() {
-               $scheduled_wordcamps = get_posts( array(
-                       'post_type'      => WCPT_POST_TYPE_ID,
-                       'post_status'    => 'wcpt-scheduled',
-                       'posts_per_page' => -1
-               ) );
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                 wp_schedule_event( current_time( 'timestamp' ), 'hourly', 'wcpt_close_wordcamps_after_event' );
+               }
</ins><span class="cx" style="display: block; padding: 0 10px"> 
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                foreach ( $scheduled_wordcamps as $wordcamp ) {
-                       $start_date = get_post_meta( $wordcamp->ID, 'Start Date (YYYY-mm-dd)', true );
-                       $end_date   = get_post_meta( $wordcamp->ID, 'End Date (YYYY-mm-dd)',   true );
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+         /**
+                * Set WordCamp posts to the Closed status after the event is over
+                */
+               public function close_wordcamps_after_event() {
+                       $scheduled_wordcamps = get_posts(
+                               array(
+                                       'post_type'      => WCPT_POST_TYPE_ID,
+                                       'post_status'    => 'wcpt-scheduled',
+                                       'posts_per_page' => -1,
+                               )
+                       );
</ins><span class="cx" style="display: block; padding: 0 10px"> 
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                        if ( empty( $start_date ) ) {
-                               continue;
-                       }
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                 foreach ( $scheduled_wordcamps as $wordcamp ) {
+                               $start_date = get_post_meta( $wordcamp->ID, 'Start Date (YYYY-mm-dd)', true );
+                               $end_date   = get_post_meta( $wordcamp->ID, 'End Date (YYYY-mm-dd)', true );
</ins><span class="cx" style="display: block; padding: 0 10px"> 
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                        if ( empty( $end_date ) ) {
-                               $end_date = $start_date;
-                       }
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                         if ( empty( $start_date ) ) {
+                                       continue;
+                               }
</ins><span class="cx" style="display: block; padding: 0 10px"> 
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                        $end_date_at_midnight = strtotime( '23:59', $end_date );    // $end_date is the date at time 00:00, but the event isn't over until 23:59
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                         if ( empty( $end_date ) ) {
+                                       $end_date = $start_date;
+                               }
</ins><span class="cx" style="display: block; padding: 0 10px"> 
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                        if ( $end_date_at_midnight > time() ) {
-                               continue;
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                         $end_date_at_midnight = strtotime( '23:59', $end_date );    // $end_date is the date at time 00:00, but the event isn't over until 23:59
+
+                               if ( $end_date_at_midnight > time() ) {
+                                       continue;
+                               }
+
+                               wp_update_post(
+                                       array(
+                                               'ID'          => $wordcamp->ID,
+                                               'post_status' => 'wcpt-closed',
+                                       )
+                               );
</ins><span class="cx" style="display: block; padding: 0 10px">                         }
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-
-                       wp_update_post( array(
-                               'ID'          => $wordcamp->ID,
-                               'post_status' => 'wcpt-closed',
-                       ) );
</del><span class="cx" style="display: block; padding: 0 10px">                 }
</span><span class="cx" style="display: block; padding: 0 10px">        }
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-}
</del><span class="cx" style="display: block; padding: 0 10px"> endif; // class_exists check
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px"> /**
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -1214,96 +1073,6 @@
</span><span class="cx" style="display: block; padding: 0 10px">                'Global Sponsorship Grant'        => 'Deprecated.',
</span><span class="cx" style="display: block; padding: 0 10px">        );
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-        foreach ( $meta_keys as $key => $value ) :
-               $object_name = wcpt_key_to_str( $key, 'wcpt_' );
-               $readonly = ( WordCamp_Admin::is_protected_field( $key ) ) ? ' readonly="readonly"' : '';
-       ?>
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+ Event_Admin::display_meta_boxes( $required_fields, $meta_keys, $messages, $post_id, WordCamp_Admin::get_protected_fields() );
</ins><span class="cx" style="display: block; padding: 0 10px"> 
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                <div class="inside">
-                       <?php if ( 'checkbox' == $value ) : ?>
-
-                               <p>
-                                       <strong><?php echo $key; ?></strong>:
-                                       <input type="checkbox" name="<?php echo $object_name; ?>" id="<?php echo $object_name; ?>" <?php checked( get_post_meta( $post_id, $key, true ) ); ?><?php echo $readonly; ?> />
-                               </p>
-
-                       <?php else : ?>
-
-                               <p>
-                                       <strong><?php echo $key; ?></strong>
-                                       <?php if ( in_array( $key, $required_fields, true ) ) : ?>
-                                               <span class="description"><?php _e( '(required)', 'wordcamporg' ); ?></span>
-                                       <?php endif; ?>
-                               </p>
-
-                               <p>
-                                       <label class="screen-reader-text" for="<?php echo $object_name; ?>"><?php echo $key; ?></label>
-
-                                       <?php switch ( $value ) :
-                                               case 'text' : ?>
-
-                                                       <input type="text" size="36" name="<?php echo $object_name; ?>" id="<?php echo $object_name; ?>" value="<?php echo esc_attr( get_post_meta( $post_id, $key, true ) ); ?>"<?php echo $readonly; ?> />
-
-                                               <?php break;
-                                               case 'number' : ?>
-
-                                                       <input type="number" size="16" name="<?php echo $object_name; ?>" id="<?php echo $object_name; ?>" value="<?php echo esc_attr( get_post_meta( $post_id, $key, true ) ); ?>" step="any" min="0"<?php echo $readonly; ?> />
-
-                                               <?php break;
-                                               case 'date' :
-
-                                                       // Quick filter on dates
-                                                       if ( $date = get_post_meta( $post_id, $key, true ) ) {
-                                                               $date = date( 'Y-m-d', $date );
-                                                       }
-
-                                                       ?>
-
-                                                       <input type="text" size="36" class="date-field" name="<?php echo $object_name; ?>" id="<?php echo $object_name; ?>" value="<?php echo $date; ?>"<?php echo $readonly; ?> />
-
-                                               <?php break;
-                                               case 'textarea' : ?>
-
-                                                       <textarea rows="4" cols="23" name="<?php echo $object_name; ?>" id="<?php echo $object_name; ?>"<?php echo $readonly; ?>><?php echo esc_attr( get_post_meta( $post_id, $key, true ) ); ?></textarea>
-
-                                               <?php break;
-                                               case 'select-currency' :
-                                                       $currencies = WordCamp_Budgets::get_currencies(); ?>
-
-                                                       <?php if ( $readonly ) :
-                                                               $value = get_post_meta( $post_id, $key, true ); ?>
-                                                               <select name="<?php echo $object_name; ?>" id="<?php echo $object_name; ?>"<?php echo $readonly; ?>>
-                                                                       <option value="<?php echo esc_attr( $value ); ?>" selected>
-                                                                               <?php echo ( $value ) ? esc_html( $currencies[ $value ] . ' (' . $value . ')' ) : ''; ?>
-                                                                       </option>
-                                                               </select>
-                                                       <?php else : ?>
-                                                               <select name="<?php echo esc_attr( $object_name ); ?>" id="<?php echo esc_attr( $object_name ); ?>" class="select-currency">
-                                                                       <?php foreach ( $currencies as $symbol => $name ) : ?>
-                                                                               <option value="<?php echo esc_attr( $symbol ); ?>"<?php selected( $symbol, get_post_meta( $post_id, $key, true ) ); ?>>
-                                                                                       <?php echo ( $symbol ) ? esc_html( $name . ' (' . $symbol . ')' ) : ''; ?>
-                                                                               </option>
-                                                                       <?php endforeach; ?>
-                                                               </select>
-                                                       <?php endif; ?>
-
-                                               <?php break;
-
-                                               default:
-                                                       do_action( 'wcpt_metabox_value', $key, $value, $object_name );
-                                                       break;
-
-                                       endswitch; ?>
-
-                                       <?php if ( ! empty( $messages[ $key ] ) ) : ?>
-                                               <?php if ( 'textarea' == $value ) { echo '<br />'; } ?>
-
-                                               <span class="description"><?php echo esc_html( $messages[ $key ] ); ?></span>
-                                       <?php endif; ?>
-                               </p>
-
-                       <?php endif; ?>
-               </div>
-
-       <?php endforeach;
</del><span class="cx" style="display: block; padding: 0 10px"> }
</span></span></pre></div>
<a id="sitestrunkwordcamporgpublic_htmlwpcontentpluginswcptwcptwordcampwordcamploaderphp"></a>
<div class="modfile"><h4 style="background-color: #eee; color: inherit; margin: 1em 0; padding: 1.3em; font-size: 115%">Modified: sites/trunk/wordcamp.org/public_html/wp-content/plugins/wcpt/wcpt-wordcamp/wordcamp-loader.php</h4>
<pre class="diff"><span>
<span class="info" style="display: block; padding: 0 10px; color: #888">--- sites/trunk/wordcamp.org/public_html/wp-content/plugins/wcpt/wcpt-wordcamp/wordcamp-loader.php    2018-08-13 07:28:19 UTC (rev 7606)
+++ sites/trunk/wordcamp.org/public_html/wp-content/plugins/wcpt/wcpt-wordcamp/wordcamp-loader.php      2018-08-13 11:52:14 UTC (rev 7607)
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -6,6 +6,8 @@
</span><span class="cx" style="display: block; padding: 0 10px"> define( 'WCPT_DEFAULT_STATUS', 'wcpt-needs-vetting' );
</span><span class="cx" style="display: block; padding: 0 10px"> define( 'WCPT_FINAL_STATUS',   'wcpt-closed'        );
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+require_once WCPT_DIR . 'wcpt-event/class-event-loader.php';
+
</ins><span class="cx" style="display: block; padding: 0 10px"> if ( ! class_exists( 'WordCamp_Loader' ) ) :
</span><span class="cx" style="display: block; padding: 0 10px"> /**
</span><span class="cx" style="display: block; padding: 0 10px">  * WordCamp_Loader
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -15,17 +17,13 @@
</span><span class="cx" style="display: block; padding: 0 10px">  * @since WordCamp Post Type (0.1)
</span><span class="cx" style="display: block; padding: 0 10px">  *
</span><span class="cx" style="display: block; padding: 0 10px">  */
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-class WordCamp_Loader {
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+class WordCamp_Loader extends Event_Loader {
</ins><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">        /**
</span><span class="cx" style="display: block; padding: 0 10px">         * The main WordCamp Post Type loader
</span><span class="cx" style="display: block; padding: 0 10px">         */
</span><span class="cx" style="display: block; padding: 0 10px">        function __construct() {
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                add_action( 'plugins_loaded',                  array( $this, 'includes'                          ) );
-               add_action( 'init',                            array( $this, 'register_post_types'               ) );
-               add_action( 'init',                            array( $this, 'register_post_capabilities'        ) );
-               add_action( 'init',                            array( $this, 'register_post_statuses'            ) );
-               add_filter( 'pre_get_posts',                   array( $this, 'query_public_statuses_on_archives' ) );
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+         parent::__construct();
</ins><span class="cx" style="display: block; padding: 0 10px">                 add_action( 'wp_insert_post_data',             array( $this, 'set_scheduled_date'                ) );
</span><span class="cx" style="display: block; padding: 0 10px">                add_filter( 'wordcamp_rewrite_rules',          array( $this, 'wordcamp_rewrite_rules'            ) );
</span><span class="cx" style="display: block; padding: 0 10px">                add_filter( 'query_vars',                      array( $this, 'query_vars'                        ) );
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -131,53 +129,8 @@
</span><span class="cx" style="display: block; padding: 0 10px">                }
</span><span class="cx" style="display: block; padding: 0 10px">        }
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-        public function register_post_statuses() {
-               foreach ( self::get_post_statuses() as $key => $label ) {
-                       register_post_status( $key, array(
-                               'label' => $label,
-                               'public' => true,
-                               'label_count' => _nx_noop(
-                                       sprintf( '%s <span class="count">(%s)</span>', $label, '%s' ),
-                                       sprintf( '%s <span class="count">(%s)</span>', $label, '%s' ),
-                                       'wordcamporg'
-                               ),
-                       ) );
-               }
-       }
</del><span class="cx" style="display: block; padding: 0 10px"> 
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-        /**
-        * Only query the public post statuses on WordCamp archives and feeds
-        *
-        * By default, any public post statuses are queried when the `post_status` parameter is not explicitly passed
-        * to WP_Query. This causes central.wordcamp.org/wordcamps/ and central.wordcamp.org/wordcamps/feed/ to display
-        * camps that are `needs-vetting`, etc, which is not desired.
-        *
-        * Another way to fix this would have been to register some of the posts statuses as `private`, but they're not
-        * consistently used in a public or private way, so that would have had more side effects.
-        *
-        * @param WP_Query $query
-        */
-       public function query_public_statuses_on_archives( $query ) {
-               if ( ! $query->is_post_type_archive( WCPT_POST_TYPE_ID ) ) {
-                       return;
-               }
</del><span class="cx" style="display: block; padding: 0 10px"> 
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                if ( is_admin() ) {
-                       return;
-               }
-
-               // Sort by the date it was added to the schedule. See WordCamp_Loader::set_scheduled_date() for details.
-               if ( '' === $query->get( 'orderby' ) ) {
-                       $query->set( 'orderby', 'menu_order date' );
-               }
-
-               if ( ! empty( $query->query_vars['post_status'] ) ) {
-                       return;
-               }
-
-               $query->query_vars['post_status'] = self::get_public_post_statuses();
-       }
-
</del><span class="cx" style="display: block; padding: 0 10px">         /**
</span><span class="cx" style="display: block; padding: 0 10px">         * Save the date that the camp was moved on to the official schedule
</span><span class="cx" style="display: block; padding: 0 10px">         *
</span></span></pre></div>
<a id="sitestrunkwordcamporgpublic_htmlwpcontentpluginswcptwcptwordcampwordcampphp"></a>
<div class="addfile"><h4 style="background-color: #eee; color: inherit; margin: 1em 0; padding: 1.3em; font-size: 115%">Added: sites/trunk/wordcamp.org/public_html/wp-content/plugins/wcpt/wcpt-wordcamp/wordcamp.php</h4>
<pre class="diff"><span>
<span class="info" style="display: block; padding: 0 10px; color: #888">--- sites/trunk/wordcamp.org/public_html/wp-content/plugins/wcpt/wcpt-wordcamp/wordcamp.php                           (rev 0)
+++ sites/trunk/wordcamp.org/public_html/wp-content/plugins/wcpt/wcpt-wordcamp/wordcamp.php     2018-08-13 11:52:14 UTC (rev 7607)
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -0,0 +1,16 @@
</span><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+<?php
+
+namespace WordPress_Community\Applications\WordCamp;
+require_once 'class-wordcamp-application.php';
+use WordPress_Community\Applications\WordCamp_Application;
+
+defined( 'WPINC' ) or die();
+
+$wordcamp_application = new WordCamp_Application();
+
+add_shortcode( $wordcamp_application::SHORTCODE_SLUG, array( $wordcamp_application, 'render_application_shortcode' ) );
+
+add_action( 'wp_enqueue_scripts', array( $wordcamp_application, 'enqueue_common_assets'), 11 );
+
+add_action( 'wp_enqueue_scripts', array( $wordcamp_application, 'enqueue_assets' ) );
+
</ins><span class="cx" style="display: block; padding: 0 10px">Property changes on: sites/trunk/wordcamp.org/public_html/wp-content/plugins/wcpt/wcpt-wordcamp/wordcamp.php
</span><span class="cx" style="display: block; padding: 0 10px">___________________________________________________________________
</span></span></pre></div>
<a id="svneolstyle"></a>
<div class="addfile"><h4 style="background-color: #eee; color: inherit; margin: 1em 0; padding: 1.3em; font-size: 115%">Added: svn:eol-style</h4></div>
<ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+native
</ins><span class="cx" style="display: block; padding: 0 10px">\ No newline at end of property
</span></div>

</body>
</html>