<!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>[13906] sites/trunk/wordpress.org/public_html/wp-content/plugins/wporg-gp-translation-events: Translate: Sync "Translation Events" from GitHub</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/13906">13906</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/13906","name":"Review Commit"}}</script></dd>
<dt style="float: left; width: 6em; font-weight: bold">Author</dt> <dd>psrpinto</dd>
<dt style="float: left; width: 6em; font-weight: bold">Date</dt> <dd>2024-07-17 11:19:52 +0000 (Wed, 17 Jul 2024)</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'>Translate: Sync "Translation Events" from GitHub</pre>

<h3>Modified Paths</h3>
<ul>
<li><a href="#sitestrunkwordpressorgpublic_htmlwpcontentpluginswporggptranslationeventsassetscsstranslationeventscss">sites/trunk/wordpress.org/public_html/wp-content/plugins/wporg-gp-translation-events/assets/css/translation-events.css</a></li>
<li><a href="#sitestrunkwordpressorgpublic_htmlwpcontentpluginswporggptranslationeventsautoloadphp">sites/trunk/wordpress.org/public_html/wp-content/plugins/wporg-gp-translation-events/autoload.php</a></li>
<li><a href="#sitestrunkwordpressorgpublic_htmlwpcontentpluginswporggptranslationeventsincludesattendeeattendeerepositoryphp">sites/trunk/wordpress.org/public_html/wp-content/plugins/wporg-gp-translation-events/includes/attendee/attendee-repository.php</a></li>
<li><a href="#sitestrunkwordpressorgpublic_htmlwpcontentpluginswporggptranslationeventsincludesattendeeattendeephp">sites/trunk/wordpress.org/public_html/wp-content/plugins/wporg-gp-translation-events/includes/attendee/attendee.php</a></li>
<li><a href="#sitestrunkwordpressorgpublic_htmlwpcontentpluginswporggptranslationeventsincludeseventeventcapabilitiesphp">sites/trunk/wordpress.org/public_html/wp-content/plugins/wporg-gp-translation-events/includes/event/event-capabilities.php</a></li>
<li><a href="#sitestrunkwordpressorgpublic_htmlwpcontentpluginswporggptranslationeventsincludeseventeventformhandlerphp">sites/trunk/wordpress.org/public_html/wp-content/plugins/wporg-gp-translation-events/includes/event/event-form-handler.php</a></li>
<li><a href="#sitestrunkwordpressorgpublic_htmlwpcontentpluginswporggptranslationeventsincludeseventeventrepositoryphp">sites/trunk/wordpress.org/public_html/wp-content/plugins/wporg-gp-translation-events/includes/event/event-repository.php</a></li>
<li><a href="#sitestrunkwordpressorgpublic_htmlwpcontentpluginswporggptranslationeventsincludeseventeventphp">sites/trunk/wordpress.org/public_html/wp-content/plugins/wporg-gp-translation-events/includes/event/event.php</a></li>
<li><a href="#sitestrunkwordpressorgpublic_htmlwpcontentpluginswporggptranslationeventsincludesroutesroutephp">sites/trunk/wordpress.org/public_html/wp-content/plugins/wporg-gp-translation-events/includes/routes/route.php</a></li>
<li><a href="#sitestrunkwordpressorgpublic_htmlwpcontentpluginswporggptranslationeventsincludesroutesuserattendeventphp">sites/trunk/wordpress.org/public_html/wp-content/plugins/wporg-gp-translation-events/includes/routes/user/attend-event.php</a></li>
<li><a href="#sitestrunkwordpressorgpublic_htmlwpcontentpluginswporggptranslationeventsincludesroutesusermyeventsphp">sites/trunk/wordpress.org/public_html/wp-content/plugins/wporg-gp-translation-events/includes/routes/user/my-events.php</a></li>
<li><a href="#sitestrunkwordpressorgpublic_htmlwpcontentpluginswporggptranslationeventsincludestemplatesphp">sites/trunk/wordpress.org/public_html/wp-content/plugins/wporg-gp-translation-events/includes/templates.php</a></li>
<li><a href="#sitestrunkwordpressorgpublic_htmlwpcontentpluginswporggptranslationeventsincludesupgradephp">sites/trunk/wordpress.org/public_html/wp-content/plugins/wporg-gp-translation-events/includes/upgrade.php</a></li>
<li><a href="#sitestrunkwordpressorgpublic_htmlwpcontentpluginswporggptranslationeventsincludesurlsphp">sites/trunk/wordpress.org/public_html/wp-content/plugins/wporg-gp-translation-events/includes/urls.php</a></li>
<li><a href="#sitestrunkwordpressorgpublic_htmlwpcontentpluginswporggptranslationeventstemplateseventattendeesphp">sites/trunk/wordpress.org/public_html/wp-content/plugins/wporg-gp-translation-events/templates/event-attendees.php</a></li>
<li><a href="#sitestrunkwordpressorgpublic_htmlwpcontentpluginswporggptranslationeventstemplateseventdetailsphp">sites/trunk/wordpress.org/public_html/wp-content/plugins/wporg-gp-translation-events/templates/event-details.php</a></li>
<li><a href="#sitestrunkwordpressorgpublic_htmlwpcontentpluginswporggptranslationeventstemplateshomephp">sites/trunk/wordpress.org/public_html/wp-content/plugins/wporg-gp-translation-events/templates/home.php</a></li>
<li><a href="#sitestrunkwordpressorgpublic_htmlwpcontentpluginswporggptranslationeventstemplatespartseventformphp">sites/trunk/wordpress.org/public_html/wp-content/plugins/wporg-gp-translation-events/templates/parts/event-form.php</a></li>
<li><a href="#sitestrunkwordpressorgpublic_htmlwpcontentpluginswporggptranslationeventswporggptranslationeventsphp">sites/trunk/wordpress.org/public_html/wp-content/plugins/wporg-gp-translation-events/wporg-gp-translation-events.php</a></li>
</ul>

<h3>Added Paths</h3>
<ul>
<li><a href="#sitestrunkwordpressorgpublic_htmlwpcontentpluginswporggptranslationeventsincludesroutesuserattendancemodephp">sites/trunk/wordpress.org/public_html/wp-content/plugins/wporg-gp-translation-events/includes/routes/user/attendance-mode.php</a></li>
<li><a href="#sitestrunkwordpressorgpublic_htmlwpcontentpluginswporggptranslationeventsincludesthemeloaderphp">sites/trunk/wordpress.org/public_html/wp-content/plugins/wporg-gp-translation-events/includes/theme-loader.php</a></li>
<li>sites/trunk/wordpress.org/public_html/wp-content/plugins/wporg-gp-translation-events/themes/</li>
<li>sites/trunk/wordpress.org/public_html/wp-content/plugins/wporg-gp-translation-events/themes/wporg-translate-events-2024/</li>
<li><a href="#sitestrunkwordpressorgpublic_htmlwpcontentpluginswporggptranslationeventsthemeswporgtranslateevents2024READMEmd">sites/trunk/wordpress.org/public_html/wp-content/plugins/wporg-gp-translation-events/themes/wporg-translate-events-2024/README.md</a></li>
<li>sites/trunk/wordpress.org/public_html/wp-content/plugins/wporg-gp-translation-events/themes/wporg-translate-events-2024/blocks/</li>
<li>sites/trunk/wordpress.org/public_html/wp-content/plugins/wporg-gp-translation-events/themes/wporg-translate-events-2024/blocks/footer/</li>
<li><a href="#sitestrunkwordpressorgpublic_htmlwpcontentpluginswporggptranslationeventsthemeswporgtranslateevents2024blocksfooterindexphp">sites/trunk/wordpress.org/public_html/wp-content/plugins/wporg-gp-translation-events/themes/wporg-translate-events-2024/blocks/footer/index.php</a></li>
<li><a href="#sitestrunkwordpressorgpublic_htmlwpcontentpluginswporggptranslationeventsthemeswporgtranslateevents2024blocksfooterrenderphp">sites/trunk/wordpress.org/public_html/wp-content/plugins/wporg-gp-translation-events/themes/wporg-translate-events-2024/blocks/footer/render.php</a></li>
<li>sites/trunk/wordpress.org/public_html/wp-content/plugins/wporg-gp-translation-events/themes/wporg-translate-events-2024/blocks/header/</li>
<li><a href="#sitestrunkwordpressorgpublic_htmlwpcontentpluginswporggptranslationeventsthemeswporgtranslateevents2024blocksheaderindexphp">sites/trunk/wordpress.org/public_html/wp-content/plugins/wporg-gp-translation-events/themes/wporg-translate-events-2024/blocks/header/index.php</a></li>
<li><a href="#sitestrunkwordpressorgpublic_htmlwpcontentpluginswporggptranslationeventsthemeswporgtranslateevents2024blocksheaderrenderphp">sites/trunk/wordpress.org/public_html/wp-content/plugins/wporg-gp-translation-events/themes/wporg-translate-events-2024/blocks/header/render.php</a></li>
<li><a href="#sitestrunkwordpressorgpublic_htmlwpcontentpluginswporggptranslationeventsthemeswporgtranslateevents2024blocksheadersiteheaderphp">sites/trunk/wordpress.org/public_html/wp-content/plugins/wporg-gp-translation-events/themes/wporg-translate-events-2024/blocks/header/site-header.php</a></li>
<li>sites/trunk/wordpress.org/public_html/wp-content/plugins/wporg-gp-translation-events/themes/wporg-translate-events-2024/blocks/pages/</li>
<li>sites/trunk/wordpress.org/public_html/wp-content/plugins/wporg-gp-translation-events/themes/wporg-translate-events-2024/blocks/pages/events/</li>
<li>sites/trunk/wordpress.org/public_html/wp-content/plugins/wporg-gp-translation-events/themes/wporg-translate-events-2024/blocks/pages/events/my-events/</li>
<li><a href="#sitestrunkwordpressorgpublic_htmlwpcontentpluginswporggptranslationeventsthemeswporgtranslateevents2024blockspageseventsmyeventsindexphp">sites/trunk/wordpress.org/public_html/wp-content/plugins/wporg-gp-translation-events/themes/wporg-translate-events-2024/blocks/pages/events/my-events/index.php</a></li>
<li><a href="#sitestrunkwordpressorgpublic_htmlwpcontentpluginswporggptranslationeventsthemeswporgtranslateevents2024blockspageseventsmyeventsrenderphp">sites/trunk/wordpress.org/public_html/wp-content/plugins/wporg-gp-translation-events/themes/wporg-translate-events-2024/blocks/pages/events/my-events/render.php</a></li>
<li><a href="#sitestrunkwordpressorgpublic_htmlwpcontentpluginswporggptranslationeventsthemeswporgtranslateevents2024functionsphp">sites/trunk/wordpress.org/public_html/wp-content/plugins/wporg-gp-translation-events/themes/wporg-translate-events-2024/functions.php</a></li>
<li><a href="#sitestrunkwordpressorgpublic_htmlwpcontentpluginswporggptranslationeventsthemeswporgtranslateevents2024indexphp">sites/trunk/wordpress.org/public_html/wp-content/plugins/wporg-gp-translation-events/themes/wporg-translate-events-2024/index.php</a></li>
<li><a href="#sitestrunkwordpressorgpublic_htmlwpcontentpluginswporggptranslationeventsthemeswporgtranslateevents2024stylecss">sites/trunk/wordpress.org/public_html/wp-content/plugins/wporg-gp-translation-events/themes/wporg-translate-events-2024/style.css</a></li>
<li>sites/trunk/wordpress.org/public_html/wp-content/plugins/wporg-gp-translation-events/themes/wporg-translate-events-2024/templates/</li>
<li><a href="#sitestrunkwordpressorgpublic_htmlwpcontentpluginswporggptranslationeventsthemeswporgtranslateevents2024templatesindexhtml">sites/trunk/wordpress.org/public_html/wp-content/plugins/wporg-gp-translation-events/themes/wporg-translate-events-2024/templates/index.html</a></li>
<li><a href="#sitestrunkwordpressorgpublic_htmlwpcontentpluginswporggptranslationeventsthemeswporgtranslateevents2024themejson">sites/trunk/wordpress.org/public_html/wp-content/plugins/wporg-gp-translation-events/themes/wporg-translate-events-2024/theme.json</a></li>
</ul>

<h3>Removed Paths</h3>
<ul>
<li><a href="#sitestrunkwordpressorgpublic_htmlwpcontentpluginswporggptranslationeventsassetscssnewdesigncss">sites/trunk/wordpress.org/public_html/wp-content/plugins/wporg-gp-translation-events/assets/css/new-design.css</a></li>
<li><a href="#sitestrunkwordpressorgpublic_htmlwpcontentpluginswporggptranslationeventsassetscssnewdotorgdesigncss">sites/trunk/wordpress.org/public_html/wp-content/plugins/wporg-gp-translation-events/assets/css/new-dotorg-design.css</a></li>
<li>sites/trunk/wordpress.org/public_html/wp-content/plugins/wporg-gp-translation-events/templates/new-design/</li>
<li>sites/trunk/wordpress.org/public_html/wp-content/plugins/wporg-gp-translation-events/templates/partials/</li>
</ul>

</div>
<div id="patch">
<h3>Diff</h3>
<a id="sitestrunkwordpressorgpublic_htmlwpcontentpluginswporggptranslationeventsassetscssnewdesigncss"></a>
<div class="delfile"><h4 style="background-color: #eee; color: inherit; margin: 1em 0; padding: 1.3em; font-size: 115%">Deleted: sites/trunk/wordpress.org/public_html/wp-content/plugins/wporg-gp-translation-events/assets/css/new-design.css</h4>
<pre class="diff"><span>
<span class="info" style="display: block; padding: 0 10px; color: #888">--- sites/trunk/wordpress.org/public_html/wp-content/plugins/wporg-gp-translation-events/assets/css/new-design.css    2024-07-16 16:18:37 UTC (rev 13905)
+++ sites/trunk/wordpress.org/public_html/wp-content/plugins/wporg-gp-translation-events/assets/css/new-design.css      2024-07-17 11:19:52 UTC (rev 13906)
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -1,53 +0,0 @@
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-/* This style is copied from
-https://github.com/WordPress/wporg-mu-plugins/blob/4ab57d37d930c8b8526458fc510568d0fb0050f8/mu-plugins/blocks/global-header-footer/postcss/_common.pcss
- */
-body {
-       --wp--preset--color--charcoal-2: #23282d;
-       --wp-global-header--background-color: var(--wp--preset--color--charcoal-2);
-       --wp--preset--color--charcoal-4: #656a71;
-       --wp--preset--color--white-opacity-15: #ffffff26;
-}
-
-header#masthead.site-header {
-       height: 60px;
-       gap: 80px;
-       border-top: 1px solid var(--wp--preset--color--white-opacity-15);
-       background-color: var(--wp-global-header--background-color);
-       div.site-branding {
-               p.site-title {
-                       font-family: Inter;
-                       font-size: 14px;
-                       font-weight: 400;
-                       line-height: 24px;
-                       text-align: left;
-               }
-
-               ul#menu-headline-nav.menu li {
-                       font-family: Inter;
-                       font-size: 14px;
-                       font-weight: 400;
-                       line-height: 24px;
-                       text-align: left;
-                       a {
-                               text-decoration: none;
-                       }
-               }
-       }
-}
-
-ul.breadcrumb {
-       font-family: Inter;
-       height: 24px;
-       li, li a {
-               font-size: 14px;
-               font-weight: 400;
-               line-height: 24px;
-               text-align: left;
-               color: var(--wp--preset--color--charcoal-4);
-               text-decoration: none;
-       }
-       li:after {
-               color: rgba(217, 217, 217, 1);
-               margin: 0 8px;
-       }
-}
</del></span></pre></div>
<a id="sitestrunkwordpressorgpublic_htmlwpcontentpluginswporggptranslationeventsassetscssnewdotorgdesigncss"></a>
<div class="delfile"><h4 style="background-color: #eee; color: inherit; margin: 1em 0; padding: 1.3em; font-size: 115%">Deleted: sites/trunk/wordpress.org/public_html/wp-content/plugins/wporg-gp-translation-events/assets/css/new-dotorg-design.css</h4>
<pre class="diff"><span>
<span class="info" style="display: block; padding: 0 10px; color: #888">--- sites/trunk/wordpress.org/public_html/wp-content/plugins/wporg-gp-translation-events/assets/css/new-dotorg-design.css     2024-07-16 16:18:37 UTC (rev 13905)
+++ sites/trunk/wordpress.org/public_html/wp-content/plugins/wporg-gp-translation-events/assets/css/new-dotorg-design.css       2024-07-17 11:19:52 UTC (rev 13906)
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -1,53 +0,0 @@
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-/* This style is copied from
-https://github.com/WordPress/wporg-mu-plugins/blob/4ab57d37d930c8b8526458fc510568d0fb0050f8/mu-plugins/blocks/global-header-footer/postcss/_common.pcss
- */
-body {
-       --wp--preset--color--charcoal-2: #23282d;
-       --wp-global-header--background-color: var(--wp--preset--color--charcoal-2);
-       --wp--preset--color--charcoal-4: #656a71;
-       --wp--preset--color--white-opacity-15: #ffffff26;
-}
-
-header#masthead.site-header {
-       height: 60px;
-       gap: 80px;
-       border-top: 1px solid var(--wp--preset--color--white-opacity-15);
-       background-color: var(--wp-global-header--background-color);
-       div.site-branding {
-               p.site-title {
-                       font-family: Inter;
-                       font-size: 14px;
-                       font-weight: 400;
-                       line-height: 24px;
-                       text-align: left;
-               }
-
-               ul#menu-headline-nav.menu li {
-                       font-family: Inter;
-                       font-size: 14px;
-                       font-weight: 400;
-                       line-height: 24px;
-                       text-align: left;
-                       a {
-                               text-decoration: none;
-                       }
-               }
-       }
-}
-
-ul.breadcrumb {
-       font-family: Inter;
-       height: 24px;
-       li, li a {
-               font-size: 14px;
-               font-weight: 400;
-               line-height: 24px;
-               text-align: left;
-               color: var(--wp--preset--color--charcoal-4);
-               text-decoration: none;
-       }
-       li:after {
-               color: rgba(217, 217, 217, 1);
-               margin: 0 8px;
-       }
-}
</del></span></pre></div>
<a id="sitestrunkwordpressorgpublic_htmlwpcontentpluginswporggptranslationeventsassetscsstranslationeventscss"></a>
<div class="modfile"><h4 style="background-color: #eee; color: inherit; margin: 1em 0; padding: 1.3em; font-size: 115%">Modified: sites/trunk/wordpress.org/public_html/wp-content/plugins/wporg-gp-translation-events/assets/css/translation-events.css</h4>
<pre class="diff"><span>
<span class="info" style="display: block; padding: 0 10px; color: #888">--- sites/trunk/wordpress.org/public_html/wp-content/plugins/wporg-gp-translation-events/assets/css/translation-events.css    2024-07-16 16:18:37 UTC (rev 13905)
+++ sites/trunk/wordpress.org/public_html/wp-content/plugins/wporg-gp-translation-events/assets/css/translation-events.css      2024-07-17 11:19:52 UTC (rev 13906)
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -88,7 +88,7 @@
</span><span class="cx" style="display: block; padding: 0 10px">        list-style-type: none;
</span><span class="cx" style="display: block; padding: 0 10px">        margin-right: 1em;
</span><span class="cx" style="display: block; padding: 0 10px">        margin-bottom: .5em;
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-        width: 15em;
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+ width: 20em;
</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"> .event-contributors li .avatar,
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -471,7 +471,18 @@
</span><span class="cx" style="display: block; padding: 0 10px">        color: var(--gp-color-btn-danger-hover-text);
</span><span class="cx" style="display: block; padding: 0 10px">        border-color: var(----gp-color-btn-danger-hover-border);
</span><span class="cx" style="display: block; padding: 0 10px"> }
</span><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+form.add-remove-user-as-host .button {
+       margin-bottom: 4px;
+}
</ins><span class="cx" style="display: block; padding: 0 10px"> 
</span><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+p.onsite-btn-note {
+       font-size: .8em;
+}
+
+label.event-radio-label {
+       width: auto;
+}
+
</ins><span class="cx" style="display: block; padding: 0 10px"> /* show the event-details-right below instead of on the right on mobile */
</span><span class="cx" style="display: block; padding: 0 10px"> @media (max-width: 768px) {
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span></span></pre></div>
<a id="sitestrunkwordpressorgpublic_htmlwpcontentpluginswporggptranslationeventsautoloadphp"></a>
<div class="modfile"><h4 style="background-color: #eee; color: inherit; margin: 1em 0; padding: 1.3em; font-size: 115%">Modified: sites/trunk/wordpress.org/public_html/wp-content/plugins/wporg-gp-translation-events/autoload.php</h4>
<pre class="diff"><span>
<span class="info" style="display: block; padding: 0 10px; color: #888">--- sites/trunk/wordpress.org/public_html/wp-content/plugins/wporg-gp-translation-events/autoload.php 2024-07-16 16:18:37 UTC (rev 13905)
+++ sites/trunk/wordpress.org/public_html/wp-content/plugins/wporg-gp-translation-events/autoload.php   2024-07-17 11:19:52 UTC (rev 13906)
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -2,6 +2,7 @@
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px"> require_once __DIR__ . '/includes/upgrade.php';
</span><span class="cx" style="display: block; padding: 0 10px"> require_once __DIR__ . '/includes/urls.php';
</span><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+require_once __DIR__ . '/includes/theme-loader.php';
</ins><span class="cx" style="display: block; padding: 0 10px"> require_once __DIR__ . '/includes/templates.php';
</span><span class="cx" style="display: block; padding: 0 10px"> require_once __DIR__ . '/includes/routes/route.php';
</span><span class="cx" style="display: block; padding: 0 10px"> require_once __DIR__ . '/includes/routes/attendee/list.php';
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -35,3 +36,4 @@
</span><span class="cx" style="display: block; padding: 0 10px"> require_once __DIR__ . '/includes/event-text-snippet.php';
</span><span class="cx" style="display: block; padding: 0 10px"> require_once __DIR__ . '/includes/routes/attendee/list.php';
</span><span class="cx" style="display: block; padding: 0 10px"> require_once __DIR__ . '/includes/routes/attendee/remove.php';
</span><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+require_once __DIR__ . '/includes/routes/user/attendance-mode.php';
</ins></span></pre></div>
<a id="sitestrunkwordpressorgpublic_htmlwpcontentpluginswporggptranslationeventsincludesattendeeattendeerepositoryphp"></a>
<div class="modfile"><h4 style="background-color: #eee; color: inherit; margin: 1em 0; padding: 1.3em; font-size: 115%">Modified: sites/trunk/wordpress.org/public_html/wp-content/plugins/wporg-gp-translation-events/includes/attendee/attendee-repository.php</h4>
<pre class="diff"><span>
<span class="info" style="display: block; padding: 0 10px; color: #888">--- sites/trunk/wordpress.org/public_html/wp-content/plugins/wporg-gp-translation-events/includes/attendee/attendee-repository.php    2024-07-16 16:18:37 UTC (rev 13905)
+++ sites/trunk/wordpress.org/public_html/wp-content/plugins/wporg-gp-translation-events/includes/attendee/attendee-repository.php      2024-07-17 11:19:52 UTC (rev 13906)
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -15,12 +15,13 @@
</span><span class="cx" style="display: block; padding: 0 10px">                // phpcs:disable WordPress.DB.DirectDatabaseQuery.NoCaching
</span><span class="cx" style="display: block; padding: 0 10px">                $wpdb->query(
</span><span class="cx" style="display: block; padding: 0 10px">                        $wpdb->prepare(
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                                "insert ignore into {$gp_table_prefix}event_attendees (event_id, user_id, is_host, is_new_contributor) values (%d, %d, %d, %d)",
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                         "insert ignore into {$gp_table_prefix}event_attendees (event_id, user_id, is_host, is_new_contributor, is_remote) values (%d, %d, %d, %d, %d)",
</ins><span class="cx" style="display: block; padding: 0 10px">                                 array(
</span><span class="cx" style="display: block; padding: 0 10px">                                        'event_id'           => $attendee->event_id(),
</span><span class="cx" style="display: block; padding: 0 10px">                                        'user_id'            => $attendee->user_id(),
</span><span class="cx" style="display: block; padding: 0 10px">                                        'is_host'            => $attendee->is_host() ? 1 : 0,
</span><span class="cx" style="display: block; padding: 0 10px">                                        'is_new_contributor' => $attendee->is_new_contributor() ? 1 : 0,
</span><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                                        'is_remote'          => $attendee->is_remote() ? 1 : 0,
</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">@@ -42,8 +43,11 @@
</span><span class="cx" style="display: block; padding: 0 10px">                // phpcs:disable WordPress.DB.DirectDatabaseQuery.NoCaching
</span><span class="cx" style="display: block; padding: 0 10px">                $wpdb->update(
</span><span class="cx" style="display: block; padding: 0 10px">                        "{$gp_table_prefix}event_attendees",
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                        array( 'is_host' => $attendee->is_host() ? 1 : 0 ),
</del><span class="cx" style="display: block; padding: 0 10px">                         array(
</span><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                                'is_host'   => $attendee->is_host() ? 1 : 0,
+                               'is_remote' => $attendee->is_remote() ? 1 : 0,
+                       ),
+                       array(
</ins><span class="cx" style="display: block; padding: 0 10px">                                 'event_id' => $attendee->event_id(),
</span><span class="cx" style="display: block; padding: 0 10px">                                'user_id'  => $attendee->user_id(),
</span><span class="cx" style="display: block; padding: 0 10px">                        )
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -131,6 +135,7 @@
</span><span class="cx" style="display: block; padding: 0 10px">                                                user_id,
</span><span class="cx" style="display: block; padding: 0 10px">                                                is_host,
</span><span class="cx" style="display: block; padding: 0 10px">                                                is_new_contributor,
</span><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                                                is_remote,
</ins><span class="cx" style="display: block; padding: 0 10px">                                                 (
</span><span class="cx" style="display: block; padding: 0 10px">                                                        select group_concat( distinct locale )
</span><span class="cx" style="display: block; padding: 0 10px">                                                        from {$gp_table_prefix}event_actions
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -158,6 +163,7 @@
</span><span class="cx" style="display: block; padding: 0 10px">                                        '1' === $row->is_host,
</span><span class="cx" style="display: block; padding: 0 10px">                                        '1' === $row->is_new_contributor,
</span><span class="cx" style="display: block; padding: 0 10px">                                        null === $row->locales ? array() : explode( ',', $row->locales ),
</span><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                                        '1' === $row->is_remote,
</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">                        $rows,
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -183,6 +189,7 @@
</span><span class="cx" style="display: block; padding: 0 10px">                                        user_id,
</span><span class="cx" style="display: block; padding: 0 10px">                                        is_host,
</span><span class="cx" style="display: block; padding: 0 10px">                                        is_new_contributor,
</span><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                                        is_remote,
</ins><span class="cx" style="display: block; padding: 0 10px">                                         (
</span><span class="cx" style="display: block; padding: 0 10px">                                                select group_concat( distinct locale )
</span><span class="cx" style="display: block; padding: 0 10px">                                                from {$gp_table_prefix}event_actions
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -208,6 +215,7 @@
</span><span class="cx" style="display: block; padding: 0 10px">                                        '1' === $row->is_host,
</span><span class="cx" style="display: block; padding: 0 10px">                                        '1' === $row->is_new_contributor,
</span><span class="cx" style="display: block; padding: 0 10px">                                        null === $row->locales ? array() : explode( ',', $row->locales ),
</span><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                                        '1' === $row->is_remote,
</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">                        $rows,
</span></span></pre></div>
<a id="sitestrunkwordpressorgpublic_htmlwpcontentpluginswporggptranslationeventsincludesattendeeattendeephp"></a>
<div class="modfile"><h4 style="background-color: #eee; color: inherit; margin: 1em 0; padding: 1.3em; font-size: 115%">Modified: sites/trunk/wordpress.org/public_html/wp-content/plugins/wporg-gp-translation-events/includes/attendee/attendee.php</h4>
<pre class="diff"><span>
<span class="info" style="display: block; padding: 0 10px; color: #888">--- sites/trunk/wordpress.org/public_html/wp-content/plugins/wporg-gp-translation-events/includes/attendee/attendee.php       2024-07-16 16:18:37 UTC (rev 13905)
+++ sites/trunk/wordpress.org/public_html/wp-content/plugins/wporg-gp-translation-events/includes/attendee/attendee.php 2024-07-17 11:19:52 UTC (rev 13906)
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -9,6 +9,7 @@
</span><span class="cx" style="display: block; padding: 0 10px">        private int $user_id;
</span><span class="cx" style="display: block; padding: 0 10px">        private bool $is_host;
</span><span class="cx" style="display: block; padding: 0 10px">        private bool $is_new_contributor;
</span><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+        private bool $is_remote;
</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">         * @var string[]
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -18,7 +19,7 @@
</span><span class="cx" style="display: block; padding: 0 10px">        /**
</span><span class="cx" style="display: block; padding: 0 10px">         * @throws Exception
</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 __construct( int $event_id, int $user_id, bool $is_host = false, $is_new_contributor = false, array $contributed_locales = array() ) {
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+ public function __construct( int $event_id, int $user_id, bool $is_host = false, $is_new_contributor = false, array $contributed_locales = array(), $is_remote = false ) {
</ins><span class="cx" style="display: block; padding: 0 10px">                 if ( $event_id < 1 ) {
</span><span class="cx" style="display: block; padding: 0 10px">                        throw new Exception( 'invalid event id' );
</span><span class="cx" style="display: block; padding: 0 10px">                }
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -30,6 +31,7 @@
</span><span class="cx" style="display: block; padding: 0 10px">                $this->user_id             = $user_id;
</span><span class="cx" style="display: block; padding: 0 10px">                $this->is_host             = $is_host;
</span><span class="cx" style="display: block; padding: 0 10px">                $this->is_new_contributor  = $is_new_contributor;
</span><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                $this->is_remote           = $is_remote;
</ins><span class="cx" style="display: block; padding: 0 10px">                 $this->contributed_locales = $contributed_locales;
</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">@@ -53,6 +55,10 @@
</span><span class="cx" style="display: block; padding: 0 10px">                return ! empty( $this->contributed_locales );
</span><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">+        public function is_remote(): bool {
+               return $this->is_remote;
+       }
+
</ins><span class="cx" style="display: block; padding: 0 10px">         public function mark_as_host(): void {
</span><span class="cx" style="display: block; padding: 0 10px">                $this->is_host = true;
</span><span class="cx" style="display: block; padding: 0 10px">        }
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -65,6 +71,14 @@
</span><span class="cx" style="display: block; padding: 0 10px">                $this->is_new_contributor = true;
</span><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">+        public function mark_as_remote_attendee(): void {
+               $this->is_remote = true;
+       }
+
+       public function mark_as_in_person_attendee(): void {
+               $this->is_remote = false;
+       }
+
</ins><span class="cx" style="display: block; padding: 0 10px">         /**
</span><span class="cx" style="display: block; padding: 0 10px">         * @return string[]
</span><span class="cx" style="display: block; padding: 0 10px">         */
</span></span></pre></div>
<a id="sitestrunkwordpressorgpublic_htmlwpcontentpluginswporggptranslationeventsincludeseventeventcapabilitiesphp"></a>
<div class="modfile"><h4 style="background-color: #eee; color: inherit; margin: 1em 0; padding: 1.3em; font-size: 115%">Modified: sites/trunk/wordpress.org/public_html/wp-content/plugins/wporg-gp-translation-events/includes/event/event-capabilities.php</h4>
<pre class="diff"><span>
<span class="info" style="display: block; padding: 0 10px; color: #888">--- sites/trunk/wordpress.org/public_html/wp-content/plugins/wporg-gp-translation-events/includes/event/event-capabilities.php        2024-07-16 16:18:37 UTC (rev 13905)
+++ sites/trunk/wordpress.org/public_html/wp-content/plugins/wporg-gp-translation-events/includes/event/event-capabilities.php  2024-07-17 11:19:52 UTC (rev 13906)
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -12,18 +12,19 @@
</span><span class="cx" style="display: block; padding: 0 10px"> use Wporg\TranslationEvents\Stats\Stats_Calculator;
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px"> class Event_Capabilities {
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-        private const MANAGE           = 'manage_translation_events';
-       private const CREATE           = 'create_translation_event';
-       private const VIEW             = 'view_translation_event';
-       private const EDIT             = 'edit_translation_event';
-       private const TRASH            = 'trash_translation_event';
-       private const DELETE           = 'delete_translation_event';
-       private const EDIT_ATTENDEES   = 'edit_translation_event_attendees';
-       private const EDIT_TITLE       = 'edit_translation_event_title';
-       private const EDIT_DESCRIPTION = 'edit_translation_event_description';
-       private const EDIT_START       = 'edit_translation_event_start';
-       private const EDIT_END         = 'edit_translation_event_end';
-       private const EDIT_TIMEZONE    = 'edit_translation_event_timezone';
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+ private const MANAGE               = 'manage_translation_events';
+       private const CREATE               = 'create_translation_event';
+       private const VIEW                 = 'view_translation_event';
+       private const EDIT                 = 'edit_translation_event';
+       private const TRASH                = 'trash_translation_event';
+       private const DELETE               = 'delete_translation_event';
+       private const EDIT_ATTENDEES       = 'edit_translation_event_attendees';
+       private const EDIT_TITLE           = 'edit_translation_event_title';
+       private const EDIT_DESCRIPTION     = 'edit_translation_event_description';
+       private const EDIT_START           = 'edit_translation_event_start';
+       private const EDIT_END             = 'edit_translation_event_end';
+       private const EDIT_TIMEZONE        = 'edit_translation_event_timezone';
+       private const EDIT_ATTENDANCE_MODE = 'edit_translation_event_attendance_mode';
</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">         * All the capabilities that concern Events.
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -41,6 +42,7 @@
</span><span class="cx" style="display: block; padding: 0 10px">                self::EDIT_START,
</span><span class="cx" style="display: block; padding: 0 10px">                self::EDIT_END,
</span><span class="cx" style="display: block; padding: 0 10px">                self::EDIT_TIMEZONE,
</span><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                self::EDIT_ATTENDANCE_MODE,
</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">        private DateTimeImmutable $now;
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -84,6 +86,7 @@
</span><span class="cx" style="display: block; padding: 0 10px">                        case self::EDIT_START:
</span><span class="cx" style="display: block; padding: 0 10px">                        case self::EDIT_END:
</span><span class="cx" style="display: block; padding: 0 10px">                        case self::EDIT_TIMEZONE:
</span><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                        case self::EDIT_ATTENDANCE_MODE:
</ins><span class="cx" style="display: block; padding: 0 10px">                                 if ( ! isset( $args[2] ) || ! is_numeric( $args[2] ) ) {
</span><span class="cx" style="display: block; padding: 0 10px">                                        return false;
</span><span class="cx" style="display: block; padding: 0 10px">                                }
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -107,7 +110,7 @@
</span><span class="cx" style="display: block; padding: 0 10px">                                if ( self::EDIT_ATTENDEES === $cap ) {
</span><span class="cx" style="display: block; padding: 0 10px">                                        return $this->has_edit_attendees( $user, $event );
</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 ( self::EDIT_TITLE === $cap || self::EDIT_DESCRIPTION === $cap || self::EDIT_START === $cap || self::EDIT_END === $cap || self::EDIT_TIMEZONE === $cap ) {
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                         if ( self::EDIT_TITLE === $cap || self::EDIT_DESCRIPTION === $cap || self::EDIT_START === $cap || self::EDIT_END === $cap || self::EDIT_TIMEZONE === $cap || self::EDIT_ATTENDANCE_MODE === $cap ) {
</ins><span class="cx" style="display: block; padding: 0 10px">                                         return $this->has_edit_field( $user, $event, $cap );
</span><span class="cx" style="display: block; padding: 0 10px">                                }
</span><span class="cx" style="display: block; padding: 0 10px">                                break;
</span></span></pre></div>
<a id="sitestrunkwordpressorgpublic_htmlwpcontentpluginswporggptranslationeventsincludeseventeventformhandlerphp"></a>
<div class="modfile"><h4 style="background-color: #eee; color: inherit; margin: 1em 0; padding: 1.3em; font-size: 115%">Modified: sites/trunk/wordpress.org/public_html/wp-content/plugins/wporg-gp-translation-events/includes/event/event-form-handler.php</h4>
<pre class="diff"><span>
<span class="info" style="display: block; padding: 0 10px; color: #888">--- sites/trunk/wordpress.org/public_html/wp-content/plugins/wporg-gp-translation-events/includes/event/event-form-handler.php        2024-07-16 16:18:37 UTC (rev 13905)
+++ sites/trunk/wordpress.org/public_html/wp-content/plugins/wporg-gp-translation-events/includes/event/event-form-handler.php  2024-07-17 11:19:52 UTC (rev 13906)
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -152,6 +152,9 @@
</span><span class="cx" style="display: block; padding: 0 10px">                                        if ( current_user_can( 'edit_translation_event_end', $event->id() ) ) {
</span><span class="cx" style="display: block; padding: 0 10px">                                                $event->set_end( $new_event->end() );
</span><span class="cx" style="display: block; padding: 0 10px">                                        }
</span><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                                        if ( current_user_can( 'edit_translation_event_attendance_mode', $event->id() ) ) {
+                                               $event->set_attendance_mode( $new_event->attendance_mode() );
+                                       }
</ins><span class="cx" style="display: block; padding: 0 10px">                                 } catch ( Exception $e ) {
</span><span class="cx" style="display: block; padding: 0 10px">                                        wp_send_json_error( esc_html__( 'Failed to update event.', 'gp-translation-events' ), 422 );
</span><span class="cx" style="display: block; padding: 0 10px">                                        return;
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -197,10 +200,11 @@
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">                // This will be sanitized by sanitize_post which is called in wp_insert_post.
</span><span class="cx" style="display: block; padding: 0 10px">                // phpcs:ignore WordPress.Security.ValidatedSanitizedInput.InputNotSanitized
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                $description    = isset( $data['event_description'] ) ? force_balance_tags( wp_unslash( $data['event_description'] ) ) : '';
-               $event_start    = isset( $data['event_start'] ) ? sanitize_text_field( wp_unslash( $data['event_start'] ) ) : '';
-               $event_end      = isset( $data['event_end'] ) ? sanitize_text_field( wp_unslash( $data['event_end'] ) ) : '';
-               $event_timezone = isset( $data['event_timezone'] ) ? sanitize_text_field( wp_unslash( $data['event_timezone'] ) ) : '';
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+         $description     = isset( $data['event_description'] ) ? force_balance_tags( wp_unslash( $data['event_description'] ) ) : '';
+               $event_start     = isset( $data['event_start'] ) ? sanitize_text_field( wp_unslash( $data['event_start'] ) ) : '';
+               $event_end       = isset( $data['event_end'] ) ? sanitize_text_field( wp_unslash( $data['event_end'] ) ) : '';
+               $event_timezone  = isset( $data['event_timezone'] ) ? sanitize_text_field( wp_unslash( $data['event_timezone'] ) ) : '';
+               $attendance_mode = isset( $data['event_attendance_mode'] ) ? sanitize_text_field( wp_unslash( $data['event_attendance_mode'] ) ) : 'onsite';
</ins><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">                $event_status = '';
</span><span class="cx" style="display: block; padding: 0 10px">                if ( isset( $data['event_form_action'] ) && in_array( $data['event_form_action'], array( 'draft', 'publish', 'trash' ), true ) ) {
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -233,6 +237,7 @@
</span><span class="cx" style="display: block; padding: 0 10px">                        $event_status,
</span><span class="cx" style="display: block; padding: 0 10px">                        $title,
</span><span class="cx" style="display: block; padding: 0 10px">                        $description,
</span><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                        $attendance_mode,
</ins><span class="cx" style="display: block; padding: 0 10px">                 );
</span><span class="cx" style="display: block; padding: 0 10px">                $event->set_id( intval( $event_id ) );
</span><span class="cx" style="display: block; padding: 0 10px">                return $event;
</span></span></pre></div>
<a id="sitestrunkwordpressorgpublic_htmlwpcontentpluginswporggptranslationeventsincludeseventeventrepositoryphp"></a>
<div class="modfile"><h4 style="background-color: #eee; color: inherit; margin: 1em 0; padding: 1.3em; font-size: 115%">Modified: sites/trunk/wordpress.org/public_html/wp-content/plugins/wporg-gp-translation-events/includes/event/event-repository.php</h4>
<pre class="diff"><span>
<span class="info" style="display: block; padding: 0 10px; color: #888">--- sites/trunk/wordpress.org/public_html/wp-content/plugins/wporg-gp-translation-events/includes/event/event-repository.php  2024-07-16 16:18:37 UTC (rev 13905)
+++ sites/trunk/wordpress.org/public_html/wp-content/plugins/wporg-gp-translation-events/includes/event/event-repository.php    2024-07-17 11:19:52 UTC (rev 13906)
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -144,6 +144,7 @@
</span><span class="cx" style="display: block; padding: 0 10px">                                $post->post_status,
</span><span class="cx" style="display: block; padding: 0 10px">                                $post->post_title,
</span><span class="cx" style="display: block; padding: 0 10px">                                $post->post_content,
</span><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                                $meta['attendance_mode'],
</ins><span class="cx" style="display: block; padding: 0 10px">                         );
</span><span class="cx" style="display: block; padding: 0 10px">                        $event->set_id( $post->ID );
</span><span class="cx" style="display: block; padding: 0 10px">                        $event->set_slug( $post->post_name );
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -531,6 +532,9 @@
</span><span class="cx" style="display: block; padding: 0 10px">                                // that do not have a title. To work around that, we set the title of those events to a single space.
</span><span class="cx" style="display: block; padding: 0 10px">                                $title = ' ';
</span><span class="cx" style="display: block; padding: 0 10px">                        }
</span><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                        if ( empty( $meta['attendance_mode'] ) ) {
+                               $meta['attendance_mode'] = 'onsite';
+                       }
</ins><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">                        $event = new Event(
</span><span class="cx" style="display: block; padding: 0 10px">                                intval( $post->post_author ),
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -540,6 +544,7 @@
</span><span class="cx" style="display: block; padding: 0 10px">                                $post->post_status,
</span><span class="cx" style="display: block; padding: 0 10px">                                $title,
</span><span class="cx" style="display: block; padding: 0 10px">                                $post->post_content,
</span><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                                $meta['attendance_mode'],
</ins><span class="cx" style="display: block; padding: 0 10px">                         );
</span><span class="cx" style="display: block; padding: 0 10px">                        $event->set_id( $post->ID );
</span><span class="cx" style="display: block; padding: 0 10px">                        $event->set_slug( $post->post_name );
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -576,9 +581,10 @@
</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">                return array(
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                        'start'    => new Event_Start_Date( $meta['_event_start'][0], $utc ),
-                       'end'      => new Event_End_Date( $meta['_event_end'][0], $utc ),
-                       'timezone' => new DateTimeZone( $meta['_event_timezone'][0] ),
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                 'start'           => new Event_Start_Date( $meta['_event_start'][0], $utc ),
+                       'end'             => new Event_End_Date( $meta['_event_end'][0], $utc ),
+                       'timezone'        => new DateTimeZone( $meta['_event_timezone'][0] ),
+                       'attendance_mode' => ! isset( $meta['_event_attendance_mode'][0] ) ? 'onsite' : $meta['_event_attendance_mode'][0],
</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">@@ -595,6 +601,7 @@
</span><span class="cx" style="display: block; padding: 0 10px">                update_post_meta( $event->id(), '_event_end', $event->end()->utc()->format( 'Y-m-d H:i:s' ) );
</span><span class="cx" style="display: block; padding: 0 10px">                update_post_meta( $event->id(), '_event_timezone', $event->timezone()->getName() );
</span><span class="cx" style="display: block; padding: 0 10px">                update_post_meta( $event->id(), '_hosts', $hosts_ids );
</span><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                update_post_meta( $event->id(), '_event_attendance_mode', $event->attendance_mode() );
</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></pre></div>
<a id="sitestrunkwordpressorgpublic_htmlwpcontentpluginswporggptranslationeventsincludeseventeventphp"></a>
<div class="modfile"><h4 style="background-color: #eee; color: inherit; margin: 1em 0; padding: 1.3em; font-size: 115%">Modified: sites/trunk/wordpress.org/public_html/wp-content/plugins/wporg-gp-translation-events/includes/event/event.php</h4>
<pre class="diff"><span>
<span class="info" style="display: block; padding: 0 10px; color: #888">--- sites/trunk/wordpress.org/public_html/wp-content/plugins/wporg-gp-translation-events/includes/event/event.php     2024-07-16 16:18:37 UTC (rev 13905)
+++ sites/trunk/wordpress.org/public_html/wp-content/plugins/wporg-gp-translation-events/includes/event/event.php       2024-07-17 11:19:52 UTC (rev 13906)
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -42,6 +42,7 @@
</span><span class="cx" style="display: block; padding: 0 10px">        private string $status;
</span><span class="cx" style="display: block; padding: 0 10px">        private string $title;
</span><span class="cx" style="display: block; padding: 0 10px">        private string $description;
</span><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+        private string $attendance_mode;
</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">         * @throws InvalidStart
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -55,7 +56,8 @@
</span><span class="cx" style="display: block; padding: 0 10px">                DateTimeZone $timezone,
</span><span class="cx" style="display: block; padding: 0 10px">                string $status,
</span><span class="cx" style="display: block; padding: 0 10px">                string $title,
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                string $description
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+         string $description,
+               string $attendance_mode = 'onsite'
</ins><span class="cx" style="display: block; padding: 0 10px">         ) {
</span><span class="cx" style="display: block; padding: 0 10px">                $this->author_id = $author_id;
</span><span class="cx" style="display: block; padding: 0 10px">                $this->validate_times( $start, $end );
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -65,6 +67,7 @@
</span><span class="cx" style="display: block; padding: 0 10px">                $this->set_status( $status );
</span><span class="cx" style="display: block; padding: 0 10px">                $this->set_title( $title );
</span><span class="cx" style="display: block; padding: 0 10px">                $this->set_description( $description );
</span><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                $this->set_attendance_mode( $attendance_mode );
</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">        public function id(): int {
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -104,6 +107,14 @@
</span><span class="cx" style="display: block; padding: 0 10px">                return $this->end->is_in_the_past();
</span><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">+        public function is_remote(): bool {
+               return 'remote' === $this->attendance_mode;
+       }
+
+       public function is_hybrid(): bool {
+               return 'hybrid' === $this->attendance_mode;
+       }
+
</ins><span class="cx" style="display: block; padding: 0 10px">         public function timezone(): DateTimeZone {
</span><span class="cx" style="display: block; padding: 0 10px">                return $this->timezone;
</span><span class="cx" style="display: block; padding: 0 10px">        }
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -144,6 +155,10 @@
</span><span class="cx" style="display: block; padding: 0 10px">                $this->timezone = $timezone;
</span><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">+        public function attendance_mode(): string {
+               return $this->attendance_mode;
+       }
+
</ins><span class="cx" style="display: block; padding: 0 10px">         /**
</span><span class="cx" style="display: block; padding: 0 10px">         * @throws InvalidStatus
</span><span class="cx" style="display: block; padding: 0 10px">         */
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -162,6 +177,10 @@
</span><span class="cx" style="display: block; padding: 0 10px">                $this->description = $description;
</span><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">+        public function set_attendance_mode( string $attendance_mode ): void {
+               $this->attendance_mode = $attendance_mode;
+       }
+
</ins><span class="cx" style="display: block; padding: 0 10px">         /**
</span><span class="cx" style="display: block; padding: 0 10px">         * @throws InvalidStart
</span><span class="cx" style="display: block; padding: 0 10px">         * @throws InvalidEnd
</span></span></pre></div>
<a id="sitestrunkwordpressorgpublic_htmlwpcontentpluginswporggptranslationeventsincludesroutesroutephp"></a>
<div class="modfile"><h4 style="background-color: #eee; color: inherit; margin: 1em 0; padding: 1.3em; font-size: 115%">Modified: sites/trunk/wordpress.org/public_html/wp-content/plugins/wporg-gp-translation-events/includes/routes/route.php</h4>
<pre class="diff"><span>
<span class="info" style="display: block; padding: 0 10px; color: #888">--- sites/trunk/wordpress.org/public_html/wp-content/plugins/wporg-gp-translation-events/includes/routes/route.php    2024-07-16 16:18:37 UTC (rev 13905)
+++ sites/trunk/wordpress.org/public_html/wp-content/plugins/wporg-gp-translation-events/includes/routes/route.php      2024-07-17 11:19:52 UTC (rev 13906)
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -4,12 +4,54 @@
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px"> use GP_Route;
</span><span class="cx" style="display: block; padding: 0 10px"> use Wporg\TranslationEvents\Templates;
</span><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+use Wporg\TranslationEvents\Theme_Loader;
</ins><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px"> abstract class Route extends GP_Route {
</span><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+        private Theme_Loader $theme_loader;
+       private bool $use_theme = false;
+
+       public function __construct() {
+               parent::__construct();
+               $this->theme_loader = new Theme_Loader( 'wporg-translate-events-2024' );
+       }
+
</ins><span class="cx" style="display: block; padding: 0 10px">         public function tmpl( $template, $args = array(), $honor_api = true ) {
</span><span class="cx" style="display: block; padding: 0 10px">                $this->set_notices_and_errors();
</span><span class="cx" style="display: block; padding: 0 10px">                $this->header( 'Content-Type: text/html; charset=utf-8' );
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                Templates::render( $template, $args );
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+         if ( ! $this->use_theme ) {
+                       $this->enqueue_legacy_styles();
+                       Templates::render( $template, $args );
+                       return;
+               }
+
+               $json = wp_json_encode( $args );
+               // phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped
+               echo do_blocks( "<!-- wp:wporg-translate-events-2024/page-events-$template $json /-->" );
</ins><span class="cx" style="display: block; padding: 0 10px">         }
</span><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+
+       protected function use_theme( bool $also_in_production = false ): void {
+               if ( $also_in_production ) {
+                       $this->use_theme = true;
+               } else {
+                       // Only enable if new design has been explicitly enabled.
+                       $this->use_theme = defined( 'TRANSLATION_EVENTS_NEW_DESIGN' ) && TRANSLATION_EVENTS_NEW_DESIGN;
+               }
+
+               if ( ! $this->use_theme ) {
+                       return;
+               }
+
+               $this->theme_loader->load();
+       }
+
+       private function enqueue_legacy_styles(): void {
+               wp_register_style(
+                       'translation-events-css',
+                       plugins_url( '/assets/css/translation-events.css', realpath( __DIR__ . '/../' ) ),
+                       array( 'dashicons' ),
+                       filemtime( __DIR__ . '/../../assets/css/translation-events.css' )
+               );
+               wp_enqueue_style( 'translation-events-css' );
+       }
</ins><span class="cx" style="display: block; padding: 0 10px"> }
</span></span></pre></div>
<a id="sitestrunkwordpressorgpublic_htmlwpcontentpluginswporggptranslationeventsincludesroutesuserattendeventphp"></a>
<div class="modfile"><h4 style="background-color: #eee; color: inherit; margin: 1em 0; padding: 1.3em; font-size: 115%">Modified: sites/trunk/wordpress.org/public_html/wp-content/plugins/wporg-gp-translation-events/includes/routes/user/attend-event.php</h4>
<pre class="diff"><span>
<span class="info" style="display: block; padding: 0 10px; color: #888">--- sites/trunk/wordpress.org/public_html/wp-content/plugins/wporg-gp-translation-events/includes/routes/user/attend-event.php        2024-07-16 16:18:37 UTC (rev 13905)
+++ sites/trunk/wordpress.org/public_html/wp-content/plugins/wporg-gp-translation-events/includes/routes/user/attend-event.php  2024-07-17 11:19:52 UTC (rev 13906)
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -31,6 +31,13 @@
</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">        public function handle( int $event_id ): void {
</span><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                $nonce_name = '_attendee_nonce';
+               if ( isset( $_POST['_attendee_nonce'] ) ) {
+                       $nonce_value = sanitize_text_field( wp_unslash( $_POST['_attendee_nonce'] ) );
+                       if ( ! wp_verify_nonce( $nonce_value, $nonce_name ) ) {
+                               $this->die_with_error( esc_html__( 'You are not authorized to change the attendance mode of this attendee', 'gp-translation-events' ), 403 );
+                       }
+               }
</ins><span class="cx" style="display: block; padding: 0 10px">                 $user = wp_get_current_user();
</span><span class="cx" style="display: block; padding: 0 10px">                if ( ! $user ) {
</span><span class="cx" style="display: block; padding: 0 10px">                        $this->die_with_error( esc_html__( 'Only logged-in users can attend events', 'gp-translation-events' ), 403 );
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -46,7 +53,9 @@
</span><span class="cx" style="display: block; padding: 0 10px">                        $this->die_with_error( esc_html__( 'Cannot attend or un-attend a past event', 'gp-translation-events' ), 403 );
</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">-                $attendee = $this->attendee_repository->get_attendee_for_event_for_user( $event->id(), $user_id );
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+         $attendee           = $this->attendee_repository->get_attendee_for_event_for_user( $event->id(), $user_id );
+               $is_remote_attendee = isset( $_POST['attend_remotely'] );
+
</ins><span class="cx" style="display: block; padding: 0 10px">                 if ( $attendee instanceof Attendee ) {
</span><span class="cx" style="display: block; padding: 0 10px">                        if ( $attendee->is_contributor() ) {
</span><span class="cx" style="display: block; padding: 0 10px">                                $this->die_with_error( esc_html__( 'Contributors cannot un-attend the event', 'gp-translation-events' ), 403 );
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -53,7 +62,7 @@
</span><span class="cx" style="display: block; padding: 0 10px">                        }
</span><span class="cx" style="display: block; padding: 0 10px">                        $this->attendee_repository->remove_attendee( $event->id(), $user_id );
</span><span class="cx" style="display: block; padding: 0 10px">                } else {
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                        $attendee = new Attendee( $event->id(), $user_id );
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                 $attendee = new Attendee( $event->id(), $user_id, false, false, array(), $is_remote_attendee );
</ins><span class="cx" style="display: block; padding: 0 10px">                         $this->attendee_adder->add_to_event( $event, $attendee );
</span><span class="cx" style="display: block; padding: 0 10px">                }
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span></span></pre></div>
<a id="sitestrunkwordpressorgpublic_htmlwpcontentpluginswporggptranslationeventsincludesroutesuserattendancemodephp"></a>
<div class="addfile"><h4 style="background-color: #eee; color: inherit; margin: 1em 0; padding: 1.3em; font-size: 115%">Added: sites/trunk/wordpress.org/public_html/wp-content/plugins/wporg-gp-translation-events/includes/routes/user/attendance-mode.php</h4>
<pre class="diff"><span>
<span class="info" style="display: block; padding: 0 10px; color: #888">--- sites/trunk/wordpress.org/public_html/wp-content/plugins/wporg-gp-translation-events/includes/routes/user/attendance-mode.php                             (rev 0)
+++ sites/trunk/wordpress.org/public_html/wp-content/plugins/wporg-gp-translation-events/includes/routes/user/attendance-mode.php       2024-07-17 11:19:52 UTC (rev 13906)
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -0,0 +1,64 @@
</span><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+<?php
+
+namespace Wporg\TranslationEvents\Routes\User;
+
+use Wporg\TranslationEvents\Attendee\Attendee;
+use Wporg\TranslationEvents\Attendee\Attendee_Repository;
+use Wporg\TranslationEvents\Event\Event_Repository_Interface;
+use Wporg\TranslationEvents\Routes\Route;
+use Wporg\TranslationEvents\Translation_Events;
+use Wporg\TranslationEvents\Urls;
+
+/**
+ * Toggle whether the current user is attending an event onsite or remotely.
+ * If the user is not currently marked as remote attendee, they will be marked as remote attendee.
+ * If the user is currently marked as as remote attendee, they will be marked as not remote attendee.
+ */
+class Attendance_Mode_Route extends Route {
+       private Event_Repository_Interface $event_repository;
+       private Attendee_Repository $attendee_repository;
+
+       /**
+        * Attendance_Mode_Route constructor.
+        */
+       public function __construct() {
+               parent::__construct();
+               $this->event_repository    = Translation_Events::get_event_repository();
+               $this->attendee_repository = Translation_Events::get_attendee_repository();
+       }
+
+       /**
+        * Handle the request to toggle whether the current user is attending an event onsite or remotely.
+        *
+        * @param int $event_id The event ID.
+        * @param int $user_id  The user ID.
+        * @return void
+        */
+       public function handle( int $event_id, int $user_id ): void {
+
+               $current_user = wp_get_current_user();
+               if ( ! $current_user->exists() ) {
+                       $this->die_with_error( esc_html__( 'Only logged-in users can manage the attendance mode of an attendee', 'gp-translation-events' ), 403 );
+               }
+
+               if ( ! current_user_can( 'edit_translation_event', $event_id ) ) {
+                       $this->die_with_error( esc_html__( 'You do not have permissions to manage the attendance mode of an attendee', 'gp-translation-events' ), 403 );
+               }
+               $event = $this->event_repository->get_event( $event_id );
+               if ( ! $event ) {
+                       $this->die_with_404();
+               }
+
+               $affected_attendee = $this->attendee_repository->get_attendee_for_event_for_user( $event_id, $user_id );
+               if ( $affected_attendee instanceof Attendee ) {
+                       if ( $affected_attendee->is_remote() ) {
+                               $affected_attendee->mark_as_in_person_attendee();
+                       } else {
+                               $affected_attendee->mark_as_remote_attendee();
+                       }
+                       $this->attendee_repository->update_attendee( $affected_attendee );
+               }
+               wp_safe_redirect( Urls::event_attendees( $event->id() ) );
+               exit;
+       }
+}
</ins><span class="cx" style="display: block; padding: 0 10px">Property changes on: sites/trunk/wordpress.org/public_html/wp-content/plugins/wporg-gp-translation-events/includes/routes/user/attendance-mode.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="sitestrunkwordpressorgpublic_htmlwpcontentpluginswporggptranslationeventsincludesroutesusermyeventsphp"></a>
<div class="modfile"><h4 style="background-color: #eee; color: inherit; margin: 1em 0; padding: 1.3em; font-size: 115%">Modified: sites/trunk/wordpress.org/public_html/wp-content/plugins/wporg-gp-translation-events/includes/routes/user/my-events.php</h4>
<pre class="diff"><span>
<span class="info" style="display: block; padding: 0 10px; color: #888">--- sites/trunk/wordpress.org/public_html/wp-content/plugins/wporg-gp-translation-events/includes/routes/user/my-events.php   2024-07-16 16:18:37 UTC (rev 13905)
+++ sites/trunk/wordpress.org/public_html/wp-content/plugins/wporg-gp-translation-events/includes/routes/user/my-events.php     2024-07-17 11:19:52 UTC (rev 13906)
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -51,7 +51,7 @@
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">                $current_user_attendee_per_event = $this->attendee_repository->get_attendees_for_events_for_user( $event_ids, $user_id );
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                Templates::use_new_design();
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+         $this->use_theme();
</ins><span class="cx" style="display: block; padding: 0 10px">                 $this->tmpl(
</span><span class="cx" style="display: block; padding: 0 10px">                        'my-events',
</span><span class="cx" style="display: block; padding: 0 10px">                        compact(
</span></span></pre></div>
<a id="sitestrunkwordpressorgpublic_htmlwpcontentpluginswporggptranslationeventsincludestemplatesphp"></a>
<div class="modfile"><h4 style="background-color: #eee; color: inherit; margin: 1em 0; padding: 1.3em; font-size: 115%">Modified: sites/trunk/wordpress.org/public_html/wp-content/plugins/wporg-gp-translation-events/includes/templates.php</h4>
<pre class="diff"><span>
<span class="info" style="display: block; padding: 0 10px; color: #888">--- sites/trunk/wordpress.org/public_html/wp-content/plugins/wporg-gp-translation-events/includes/templates.php       2024-07-16 16:18:37 UTC (rev 13905)
+++ sites/trunk/wordpress.org/public_html/wp-content/plugins/wporg-gp-translation-events/includes/templates.php 2024-07-17 11:19:52 UTC (rev 13906)
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -2,38 +2,12 @@
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px"> namespace Wporg\TranslationEvents;
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+/**
+ * Legacy (non-theme) templates.
+ */
</ins><span class="cx" style="display: block; padding: 0 10px"> class Templates {
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-        private static bool $use_new_design = false;
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+ private const LEGACY_TEMPLATE_DIRECTORY = __DIR__ . '/../templates/';
</ins><span class="cx" style="display: block; padding: 0 10px"> 
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-        public static function use_new_design( bool $also_in_production = false ): void {
-               if ( $also_in_production ) {
-                       // If it's enabled for production, it's also enabled for development, so it's always enabled.
-                       self::$use_new_design = true;
-               } else {
-                       // Only enable if new design has been explicitly enabled.
-                       self::$use_new_design = defined( 'TRANSLATION_EVENTS_NEW_DESIGN' ) && TRANSLATION_EVENTS_NEW_DESIGN;
-               }
-
-               if ( self::$use_new_design ) {
-                       wp_register_style(
-                               'translation-events-new-design-css',
-                               plugins_url( 'assets/css/new-design.css', __DIR__ ),
-                               array( 'dashicons' ),
-                               filemtime( __DIR__ . '/../assets/css/new-design.css' )
-                       );
-                       gp_enqueue_styles( 'translation-events-new-design-css' );
-               }
-       }
-
-       public static function render( string $template, array $data = array() ) {
-               $template_path = __DIR__ . '/../templates/';
-               if ( self::$use_new_design ) {
-                       $template_path = $template_path . 'new-design/';
-               }
-
-               gp_tmpl_load( $template, $data, $template_path );
-       }
-
</del><span class="cx" style="display: block; padding: 0 10px">         public static function header( array $data = array() ) {
</span><span class="cx" style="display: block; padding: 0 10px">                self::part( 'header', $data );
</span><span class="cx" style="display: block; padding: 0 10px">        }
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -42,7 +16,11 @@
</span><span class="cx" style="display: block; padding: 0 10px">                self::part( 'footer', $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">-        public static function part( string $template, array $data ) {
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+ public static function part( string $template, array $data = array() ) {
</ins><span class="cx" style="display: block; padding: 0 10px">                 self::render( "parts/$template", $data );
</span><span class="cx" style="display: block; padding: 0 10px">        }
</span><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+
+       public static function render( string $template, array $data = array() ) {
+               gp_tmpl_load( $template, $data, self::LEGACY_TEMPLATE_DIRECTORY );
+       }
</ins><span class="cx" style="display: block; padding: 0 10px"> }
</span></span></pre></div>
<a id="sitestrunkwordpressorgpublic_htmlwpcontentpluginswporggptranslationeventsincludesthemeloaderphp"></a>
<div class="addfile"><h4 style="background-color: #eee; color: inherit; margin: 1em 0; padding: 1.3em; font-size: 115%">Added: sites/trunk/wordpress.org/public_html/wp-content/plugins/wporg-gp-translation-events/includes/theme-loader.php</h4>
<pre class="diff"><span>
<span class="info" style="display: block; padding: 0 10px; color: #888">--- sites/trunk/wordpress.org/public_html/wp-content/plugins/wporg-gp-translation-events/includes/theme-loader.php                            (rev 0)
+++ sites/trunk/wordpress.org/public_html/wp-content/plugins/wporg-gp-translation-events/includes/theme-loader.php      2024-07-17 11:19:52 UTC (rev 13906)
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -0,0 +1,75 @@
</span><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+<?php
+
+namespace Wporg\TranslationEvents;
+
+class Theme_Loader {
+       private string $theme;
+
+       public function __construct( string $theme ) {
+               $this->theme = $theme;
+       }
+
+       public function load(): void {
+               if ( str_ends_with( get_stylesheet_directory(), $this->theme ) ) {
+                       // Our theme is already the active theme, there's nothing to do here.
+                       return;
+               }
+
+               if ( class_exists( 'WP_Theme_JSON_Resolver_Gutenberg' ) ) {
+                       // We must clean cached theme.json data to force a new parse of theme.json of the child and parent themes.
+                       \WP_Theme_JSON_Resolver_Gutenberg::clean_cached_data();
+               }
+
+               add_filter(
+                       'template',
+                       function (): string {
+                               // TODO: Calculate automatically.
+                               return 'wporg-parent-2021';
+                       }
+               );
+               add_filter(
+                       'stylesheet',
+                       function (): string {
+                               return $this->theme;
+                       }
+               );
+
+               global $wp_stylesheet_path, $wp_template_path;
+               $wp_stylesheet_path = get_stylesheet_directory();
+               $wp_template_path   = get_template_directory();
+
+               foreach ( wp_get_active_and_valid_themes() as $theme ) {
+                       if ( file_exists( $theme . '/functions.php' ) ) {
+                               include $theme . '/functions.php';
+                       }
+               }
+
+               do_action( 'wporg_translate_events_theme_init' );
+
+               $this->dequeue_unwanted_assets();
+       }
+
+       private function dequeue_unwanted_assets(): void {
+               // Dequeue styles and scripts from glotpress and from the pub/wporg theme.
+               // The WordPress.org theme enqueues styles in wp_enqueue_scripts, so we need to dequeue in both styles and scripts.
+               foreach ( array( 'wp_enqueue_styles', 'wp_enqueue_scripts' ) as $action ) {
+                       add_action(
+                               $action,
+                               function (): void {
+                                       wp_styles()->remove(
+                                               array(
+                                                       'wporg-style',
+                                               )
+                                       );
+                                       wp_scripts()->remove(
+                                               array(
+                                                       'gp-common',
+                                                       'wporg-plugins-skip-link-focus-fix',
+                                               )
+                                       );
+                               },
+                               9999 // Run as late as possible to make sure the styles/scripts are not enqueued after we dequeue them.
+                       );
+               }
+       }
+}
</ins><span class="cx" style="display: block; padding: 0 10px">Property changes on: sites/trunk/wordpress.org/public_html/wp-content/plugins/wporg-gp-translation-events/includes/theme-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="sitestrunkwordpressorgpublic_htmlwpcontentpluginswporggptranslationeventsincludesupgradephp"></a>
<div class="modfile"><h4 style="background-color: #eee; color: inherit; margin: 1em 0; padding: 1.3em; font-size: 115%">Modified: sites/trunk/wordpress.org/public_html/wp-content/plugins/wporg-gp-translation-events/includes/upgrade.php</h4>
<pre class="diff"><span>
<span class="info" style="display: block; padding: 0 10px; color: #888">--- sites/trunk/wordpress.org/public_html/wp-content/plugins/wporg-gp-translation-events/includes/upgrade.php 2024-07-16 16:18:37 UTC (rev 13905)
+++ sites/trunk/wordpress.org/public_html/wp-content/plugins/wporg-gp-translation-events/includes/upgrade.php   2024-07-17 11:19:52 UTC (rev 13906)
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -6,7 +6,7 @@
</span><span class="cx" style="display: block; padding: 0 10px"> use WP_Query;
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px"> class Upgrade {
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-        private const VERSION        = 3;
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+ private const VERSION        = 4;
</ins><span class="cx" style="display: block; padding: 0 10px">         private const VERSION_OPTION = 'wporg_gp_translations_events_version';
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">        public static function upgrade_if_needed(): void {
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -62,6 +62,7 @@
</span><span class="cx" style="display: block; padding: 0 10px">                                `user_id` int(10) NOT NULL COMMENT 'ID of the user who is attending the event',
</span><span class="cx" style="display: block; padding: 0 10px">                                `is_host` tinyint(1) default 0 not null comment 'Whether the user is a host of the event',
</span><span class="cx" style="display: block; padding: 0 10px">                                `is_new_contributor` tinyint(1) default 0 not null comment 'Whether the user is a new translation contributor',
</span><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                                `is_remote` tinyint(1) default 0 not null comment 'Whether the user attends the event remotely',
</ins><span class="cx" style="display: block; padding: 0 10px">                         PRIMARY KEY (`translate_event_attendees_id`),
</span><span class="cx" style="display: block; padding: 0 10px">                        UNIQUE KEY `event_per_user` (`event_id`,`user_id`),
</span><span class="cx" style="display: block; padding: 0 10px">                        INDEX `user` (`user_id`)
</span></span></pre></div>
<a id="sitestrunkwordpressorgpublic_htmlwpcontentpluginswporggptranslationeventsincludesurlsphp"></a>
<div class="modfile"><h4 style="background-color: #eee; color: inherit; margin: 1em 0; padding: 1.3em; font-size: 115%">Modified: sites/trunk/wordpress.org/public_html/wp-content/plugins/wporg-gp-translation-events/includes/urls.php</h4>
<pre class="diff"><span>
<span class="info" style="display: block; padding: 0 10px; color: #888">--- sites/trunk/wordpress.org/public_html/wp-content/plugins/wporg-gp-translation-events/includes/urls.php    2024-07-16 16:18:37 UTC (rev 13905)
+++ sites/trunk/wordpress.org/public_html/wp-content/plugins/wporg-gp-translation-events/includes/urls.php      2024-07-17 11:19:52 UTC (rev 13906)
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -88,4 +88,8 @@
</span><span class="cx" style="display: block; padding: 0 10px">        public static function event_remove_attendee( int $event_id, int $user_id ): string {
</span><span class="cx" style="display: block; padding: 0 10px">                return gp_url( "/events/$event_id/attendees/remove/$user_id" );
</span><span class="cx" style="display: block; padding: 0 10px">        }
</span><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+
+       public static function event_toggle_attendance_mode( int $event_id, int $user_id ): string {
+               return gp_url( "/events/attendance-mode/$event_id/$user_id" );
+       }
</ins><span class="cx" style="display: block; padding: 0 10px"> }
</span></span></pre></div>
<a id="sitestrunkwordpressorgpublic_htmlwpcontentpluginswporggptranslationeventstemplateseventattendeesphp"></a>
<div class="modfile"><h4 style="background-color: #eee; color: inherit; margin: 1em 0; padding: 1.3em; font-size: 115%">Modified: sites/trunk/wordpress.org/public_html/wp-content/plugins/wporg-gp-translation-events/templates/event-attendees.php</h4>
<pre class="diff"><span>
<span class="info" style="display: block; padding: 0 10px; color: #888">--- sites/trunk/wordpress.org/public_html/wp-content/plugins/wporg-gp-translation-events/templates/event-attendees.php        2024-07-16 16:18:37 UTC (rev 13905)
+++ sites/trunk/wordpress.org/public_html/wp-content/plugins/wporg-gp-translation-events/templates/event-attendees.php  2024-07-17 11:19:52 UTC (rev 13906)
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -31,6 +31,7 @@
</span><span class="cx" style="display: block; padding: 0 10px">                <thead>
</span><span class="cx" style="display: block; padding: 0 10px">                        <tr>
</span><span class="cx" style="display: block; padding: 0 10px">                                <th scope="col"><?php esc_html_e( 'Name', 'gp-translation-events' ); ?></th>
</span><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                                <th><?php esc_html_e( 'Remote', 'gp-translation-events' ); ?></th>
</ins><span class="cx" style="display: block; padding: 0 10px">                                 <th><?php esc_html_e( 'Host', 'gp-translation-events' ); ?></th>
</span><span class="cx" style="display: block; padding: 0 10px">                                <th><?php esc_html_e( 'Action', 'gp-translation-events' ); ?></th>
</span><span class="cx" style="display: block; padding: 0 10px">                        </tr>
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -41,8 +42,16 @@
</span><span class="cx" style="display: block; padding: 0 10px">                                        <td>
</span><span class="cx" style="display: block; padding: 0 10px">                                                <a class="attendee-avatar" href="<?php echo esc_url( get_author_posts_url( $attendee->user_id() ) ); ?>" class="avatar"><?php echo get_avatar( $attendee->user_id(), 48 ); ?></a>
</span><span class="cx" style="display: block; padding: 0 10px">                                                <a href="<?php echo esc_url( get_author_posts_url( $attendee->user_id() ) ); ?>" class="name"><?php echo esc_html( get_the_author_meta( 'display_name', $attendee->user_id() ) ); ?></a>
</span><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                                                <?php if ( $attendee->is_new_contributor() ) : ?>
+                                                       <span class="first-time-contributor-tada" title="<?php esc_attr_e( 'New Translation Contributor', 'gp-translation-events' ); ?>"></span>
+                                               <?php endif; ?>
</ins><span class="cx" style="display: block; padding: 0 10px">                                         </td>
</span><span class="cx" style="display: block; padding: 0 10px">                                        <td>
</span><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                                                <?php if ( $attendee->is_remote() ) : ?>
+                                                       <span><?php esc_html_e( 'Yes', 'gp-translation-events' ); ?></span>
+                                                       <?php endif; ?>
+                                       </td>
+                                       <td>
</ins><span class="cx" style="display: block; padding: 0 10px">                                                 <?php if ( $attendee->is_host() ) : ?>
</span><span class="cx" style="display: block; padding: 0 10px">                                                        <span><?php esc_html_e( 'Yes', 'gp-translation-events' ); ?></span>
</span><span class="cx" style="display: block; padding: 0 10px">                                                        <?php endif; ?>
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -54,6 +63,9 @@
</span><span class="cx" style="display: block; padding: 0 10px">                                                        <?php else : ?>
</span><span class="cx" style="display: block; padding: 0 10px">                                                                        <input type="submit" class="button is-secondary convert-to-host" value="<?php echo esc_attr__( 'Make co-host', 'gp-translation-events' ); ?>"/>
</span><span class="cx" style="display: block; padding: 0 10px">                                                        <?php endif; ?>
</span><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                                                        <?php if ( $event->is_hybrid() ) : ?>
+                                                               <a href="<?php echo esc_url( Urls::event_toggle_attendance_mode( $event->id(), $attendee->user_id() ) ); ?>" class="button set-attendance-mode"><?php $attendee->is_remote() ? esc_html_e( 'Set as on-site', 'gp-translation-events' ) : esc_html_e( 'Set as remote', 'gp-translation-events' ); ?></a>
+                                                       <?php endif; ?>
</ins><span class="cx" style="display: block; padding: 0 10px">                                                         <?php if ( ! $attendee->is_host() ) : ?>
</span><span class="cx" style="display: block; padding: 0 10px">                                                                <a href="<?php echo esc_url( Urls::event_remove_attendee( $event->id(), $attendee->user_id() ) ); ?>" class="button remove-attendee"><?php esc_html_e( 'Remove', 'gp-translation-events' ); ?></a>
</span><span class="cx" style="display: block; padding: 0 10px">                                                        <?php endif; ?>
</span></span></pre></div>
<a id="sitestrunkwordpressorgpublic_htmlwpcontentpluginswporggptranslationeventstemplateseventdetailsphp"></a>
<div class="modfile"><h4 style="background-color: #eee; color: inherit; margin: 1em 0; padding: 1.3em; font-size: 115%">Modified: sites/trunk/wordpress.org/public_html/wp-content/plugins/wporg-gp-translation-events/templates/event-details.php</h4>
<pre class="diff"><span>
<span class="info" style="display: block; padding: 0 10px; color: #888">--- sites/trunk/wordpress.org/public_html/wp-content/plugins/wporg-gp-translation-events/templates/event-details.php  2024-07-16 16:18:37 UTC (rev 13905)
+++ sites/trunk/wordpress.org/public_html/wp-content/plugins/wporg-gp-translation-events/templates/event-details.php    2024-07-17 11:19:52 UTC (rev 13906)
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -101,7 +101,7 @@
</span><span class="cx" style="display: block; padding: 0 10px">                                                        <a href="<?php echo esc_url( get_author_posts_url( $contributor->user_id() ) ); ?>" class="avatar"><?php echo get_avatar( $contributor->user_id(), 48 ); ?></a>
</span><span class="cx" style="display: block; padding: 0 10px">                                                        <a href="<?php echo esc_url( get_author_posts_url( $contributor->user_id() ) ); ?>" class="name"><?php echo esc_html( get_the_author_meta( 'display_name', $contributor->user_id() ) ); ?></a>
</span><span class="cx" style="display: block; padding: 0 10px">                                                        <?php if ( $contributor->is_new_contributor() ) : ?>
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                                                                <span class="first-time-contributor-tada" title="<?php esc_html_e( 'New Translation Contributor', 'gp-translation-events' ); ?>"></span>
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                                                         <span class="first-time-contributor-tada" title="<?php esc_attr_e( 'New Translation Contributor', 'gp-translation-events' ); ?>"></span>
</ins><span class="cx" style="display: block; padding: 0 10px">                                                         <?php endif; ?>
</span><span class="cx" style="display: block; padding: 0 10px">                                                </li>
</span><span class="cx" style="display: block; padding: 0 10px">                                        <?php endforeach; ?>
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -284,10 +284,21 @@
</span><span class="cx" style="display: block; padding: 0 10px">                                <?php // Contributors can't un-attend so don't show anything. ?>
</span><span class="cx" style="display: block; padding: 0 10px">                        <?php else : ?>
</span><span class="cx" style="display: block; padding: 0 10px">                                <form class="event-details-attend" method="post" action="<?php echo esc_url( Urls::event_toggle_attendee( $event->id() ) ); ?>">
</span><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                                        <?php wp_nonce_field( '_attendee_nonce', '_attendee_nonce' ); ?>
</ins><span class="cx" style="display: block; padding: 0 10px">                                         <?php if ( $user_is_attending ) : ?>
</span><span class="cx" style="display: block; padding: 0 10px">                                                <input type="submit" class="button is-secondary attending-btn" value="<?php esc_attr_e( "You're attending", 'gp-translation-events' ); ?>" />
</span><span class="cx" style="display: block; padding: 0 10px">                                        <?php else : ?>
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                                                <input type="submit" class="button is-primary attend-btn" value="<?php esc_attr_e( 'Attend Event', 'gp-translation-events' ); ?>"/>
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                                         <?php if ( ! $event->is_remote() ) : ?>
+                                                       <input type="submit" class="button is-primary attend-btn" value="<?php esc_attr_e( 'Attend Event On-site', 'gp-translation-events' ); ?>"/>
+                                                       <?php if ( ! $event->is_hybrid() ) : ?>
+                                                               <p class="onsite-btn-note">
+                                                                       <?php echo wp_kses_post( __( '<strong>Note:</strong> This is an onsite-only event. Please only click attend if you are at the event. The host might otherwise remove you.', 'gp-translation-events' ) ); ?>
+                                                               </p>      
+                                                       <?php endif; ?>
+                                               <?php endif; ?>
+                                               <?php if ( $event->is_remote() || $event->is_hybrid() ) : ?>
+                                                       <input type="submit" name="attend_remotely" class="button is-primary attend-btn" value="<?php esc_attr_e( 'Attend Event Remotely', 'gp-translation-events' ); ?>"/>
+                                               <?php endif; ?>
</ins><span class="cx" style="display: block; padding: 0 10px">                                         <?php endif; ?>
</span><span class="cx" style="display: block; padding: 0 10px">                                </form>
</span><span class="cx" style="display: block; padding: 0 10px">                        <?php endif; ?>
</span></span></pre></div>
<a id="sitestrunkwordpressorgpublic_htmlwpcontentpluginswporggptranslationeventstemplateshomephp"></a>
<div class="modfile"><h4 style="background-color: #eee; color: inherit; margin: 1em 0; padding: 1.3em; font-size: 115%">Modified: sites/trunk/wordpress.org/public_html/wp-content/plugins/wporg-gp-translation-events/templates/home.php</h4>
<pre class="diff"><span>
<span class="info" style="display: block; padding: 0 10px; color: #888">--- sites/trunk/wordpress.org/public_html/wp-content/plugins/wporg-gp-translation-events/templates/home.php   2024-07-16 16:18:37 UTC (rev 13905)
+++ sites/trunk/wordpress.org/public_html/wp-content/plugins/wporg-gp-translation-events/templates/home.php     2024-07-17 11:19:52 UTC (rev 13906)
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -19,8 +19,19 @@
</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">-
</del><span class="cx" style="display: block; padding: 0 10px"> <div class="event-page-wrapper">
</span><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+        <div class="notice" style="padding: .5rem">
+               <?php
+               echo wp_kses(
+                       sprintf(
+                       // translators: %s is a link to a page about hosting events.
+                               __( 'Do you want to host your own event? <a href="%s">Find more information here</a>.', 'gp-translation-events' ),
+                               'https://make.wordpress.org/polyglots/2024/05/29/translation-events-inviting-gtes-to-create-and-manage-events/'
+                       ),
+                       array( 'a' => array( 'href' => array() ) )
+               );
+               ?>
+       </div>
</ins><span class="cx" style="display: block; padding: 0 10px"> <div class="event-left-col">
</span><span class="cx" style="display: block; padding: 0 10px"> <?php
</span><span class="cx" style="display: block; padding: 0 10px"> if ( empty( $current_events_query->events ) && empty( $upcoming_events_query->events ) && empty( $past_events_query->post_count ) ) :
</span></span></pre></div>
<a id="sitestrunkwordpressorgpublic_htmlwpcontentpluginswporggptranslationeventstemplatespartseventformphp"></a>
<div class="modfile"><h4 style="background-color: #eee; color: inherit; margin: 1em 0; padding: 1.3em; font-size: 115%">Modified: sites/trunk/wordpress.org/public_html/wp-content/plugins/wporg-gp-translation-events/templates/parts/event-form.php</h4>
<pre class="diff"><span>
<span class="info" style="display: block; padding: 0 10px; color: #888">--- sites/trunk/wordpress.org/public_html/wp-content/plugins/wporg-gp-translation-events/templates/parts/event-form.php       2024-07-16 16:18:37 UTC (rev 13905)
+++ sites/trunk/wordpress.org/public_html/wp-content/plugins/wporg-gp-translation-events/templates/parts/event-form.php 2024-07-17 11:19:52 UTC (rev 13906)
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -71,6 +71,21 @@
</span><span class="cx" style="display: block; padding: 0 10px">                                ?>
</span><span class="cx" style="display: block; padding: 0 10px">                        </select>
</span><span class="cx" style="display: block; padding: 0 10px">                </div>
</span><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                <div>
+                       <label for="event-attendance-mode"><?php esc_html_e( 'Attendance Mode', 'gp-translation-events' ); ?></label>
+                       <label class="event-radio-label" title="Attendees can attend remotely and on-site">
+                               <input type="radio" id="event-attendance-mode-hybrid" name="event_attendance_mode" <?php echo $event->is_hybrid() ? esc_attr( 'checked' ) : ''; ?> value="hybrid" required>
+                               <?php esc_html_e( 'Hybrid (Remote and On-site)', 'gp-translation-events' ); ?>
+                       </label>
+                       <label class="event-radio-label" title="Attendees can only attend remotely">
+                               <input type="radio" id="event-attendance-mode-remote" name="event_attendance_mode" <?php echo $event->is_remote() ? esc_attr( 'checked' ) : ''; ?> value="remote" required>
+                               <?php esc_html_e( 'Remote', 'gp-translation-events' ); ?>
+                       </label>
+                       <label class="event-radio-label" title="Attendees can only attend on-site">
+                               <input type="radio" id="event-attendance-mode-onsite" name="event_attendance_mode" <?php echo ! $event->is_hybrid() && ! $event->is_remote() ? esc_attr( 'checked' ) : ''; ?> value="onsite" required>
+                               <?php esc_html_e( 'On-site', 'gp-translation-events' ); ?>
+                       </label>
+               </div>
</ins><span class="cx" style="display: block; padding: 0 10px">                 <div class="submit-btn-group">
</span><span class="cx" style="display: block; padding: 0 10px">                        <label for="event-status"></label>
</span><span class="cx" style="display: block; padding: 0 10px">                        <?php if ( $event->id() ) : ?>
</span></span></pre></div>
<a id="sitestrunkwordpressorgpublic_htmlwpcontentpluginswporggptranslationeventsthemeswporgtranslateevents2024READMEmd"></a>
<div class="addfile"><h4 style="background-color: #eee; color: inherit; margin: 1em 0; padding: 1.3em; font-size: 115%">Added: sites/trunk/wordpress.org/public_html/wp-content/plugins/wporg-gp-translation-events/themes/wporg-translate-events-2024/README.md</h4>
<pre class="diff"><span>
<span class="info" style="display: block; padding: 0 10px; color: #888">--- sites/trunk/wordpress.org/public_html/wp-content/plugins/wporg-gp-translation-events/themes/wporg-translate-events-2024/README.md                         (rev 0)
+++ sites/trunk/wordpress.org/public_html/wp-content/plugins/wporg-gp-translation-events/themes/wporg-translate-events-2024/README.md   2024-07-17 11:19:52 UTC (rev 13906)
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -0,0 +1,35 @@
</span><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+# Theme for translate.wordpress.org/events
+
+This is the theme used by the [Translations Events](https://translate.wordpress.org/events) section of the `translate.wordpress.org` site (from now on referred to as `wporg-translate`).
+
+> Note that currently not all pages are using this theme yet, work is ongoing to rework pages so they use this theme.
+
+## Context
+This section provides context useful to understand why this theme is structured the way it is, and how it integrates into the wider environment at `wporg-translate`.
+
+### Themes at `wporg-translate`
+The `wporg-translate` site does not use WordPress themes in the traditional way. Instead, requests are handled by a `Route`, which then renders the template of the requested page. In a traditional WP site, WP itself would decide which page to render, and (for example) apply the header and footer of the currently-active theme.
+
+At `wporg-translate` this is not the case, the `Route` and the template of the page completely control the markup being rendered, and the styles being used.
+
+### How it used to work
+
+> Note that currently most pages at `wporg-translate` still work this way. Work is ongoing to rework pages so they work as described in the [next section](#how-it-works-now-with-this-theme).
+
+As described above, a `Route` intercepts the request, then calls the PHP file of the template of the requested page. That PHP file registers whatever styles and scripts are needed, then renders the markup of the full page, including header and footer.
+
+The templates and styles are provided by the following plugins:
+
+- `GlotPress`
+- `wporg-gp-customizations`
+- `wporg-gp-translation-events`
+- Maybe other `wporg-gp-*` plugins
+
+### How it works now, with this theme
+This new behaviour is enabled for a given page when the developer adds a call to `$this->use_theme()` in the `Route` of said page. This results in this theme being "faked" as the currently-active theme for only the ongoing request (see [`Theme_Loader` in `wporg-gp-translation-events`](https://github.com/WordPress/wporg-gp-translation-events/blob/trunk/includes/theme-loader.php)).
+
+In this case, when the `Route` intercepts the request, instead of calling the PHP template file, it instead renders a block provided by this theme, that is specific to the page to render ( e.g. `wporg-translate-events-2024/page-events-my-events`). This block renders:
+
+- The header that is common to all pages.
+- The content of the specific page being rendered.
+- The footer.
</ins></span></pre></div>
<a id="sitestrunkwordpressorgpublic_htmlwpcontentpluginswporggptranslationeventsthemeswporgtranslateevents2024blocksfooterindexphp"></a>
<div class="addfile"><h4 style="background-color: #eee; color: inherit; margin: 1em 0; padding: 1.3em; font-size: 115%">Added: sites/trunk/wordpress.org/public_html/wp-content/plugins/wporg-gp-translation-events/themes/wporg-translate-events-2024/blocks/footer/index.php</h4>
<pre class="diff"><span>
<span class="info" style="display: block; padding: 0 10px; color: #888">--- sites/trunk/wordpress.org/public_html/wp-content/plugins/wporg-gp-translation-events/themes/wporg-translate-events-2024/blocks/footer/index.php                           (rev 0)
+++ sites/trunk/wordpress.org/public_html/wp-content/plugins/wporg-gp-translation-events/themes/wporg-translate-events-2024/blocks/footer/index.php     2024-07-17 11:19:52 UTC (rev 13906)
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -0,0 +1,15 @@
</span><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+<?php namespace Wporg\TranslationEvents\Theme_2024;
+
+register_block_type(
+       'wporg-translate-events-2024/footer',
+       array(
+               // The $attributes argument cannot be removed despite not being used in this function,
+               // because otherwise it won't be available in render.php.
+               // phpcs:ignore Generic.CodeAnalysis.UnusedFunctionParameter.Found
+               'render_callback' => function ( array $attributes ) {
+                       ob_start();
+                       include_once __DIR__ . '/render.php';
+                       return do_blocks( ob_get_clean() );
+               },
+       )
+);
</ins><span class="cx" style="display: block; padding: 0 10px">Property changes on: sites/trunk/wordpress.org/public_html/wp-content/plugins/wporg-gp-translation-events/themes/wporg-translate-events-2024/blocks/footer/index.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="sitestrunkwordpressorgpublic_htmlwpcontentpluginswporggptranslationeventsthemeswporgtranslateevents2024blocksfooterrenderphp"></a>
<div class="addfile"><h4 style="background-color: #eee; color: inherit; margin: 1em 0; padding: 1.3em; font-size: 115%">Added: sites/trunk/wordpress.org/public_html/wp-content/plugins/wporg-gp-translation-events/themes/wporg-translate-events-2024/blocks/footer/render.php</h4>
<pre class="diff"><span>
<span class="info" style="display: block; padding: 0 10px; color: #888">--- sites/trunk/wordpress.org/public_html/wp-content/plugins/wporg-gp-translation-events/themes/wporg-translate-events-2024/blocks/footer/render.php                          (rev 0)
+++ sites/trunk/wordpress.org/public_html/wp-content/plugins/wporg-gp-translation-events/themes/wporg-translate-events-2024/blocks/footer/render.php    2024-07-17 11:19:52 UTC (rev 13906)
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -0,0 +1,8 @@
</span><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+<?php namespace Wporg\TranslationEvents\Theme_2024; ?>
+
+                       </div><?php // Close the main wp-block-group div, opened by the header block. ?>
+                       <!-- wp:wporg/global-footer /-->
+                       <?php wp_footer(); ?>
+               </div><?php // Close the wp-site-blocks div, opened by the header block. ?>
+       </body>
+</html>
</ins><span class="cx" style="display: block; padding: 0 10px">Property changes on: sites/trunk/wordpress.org/public_html/wp-content/plugins/wporg-gp-translation-events/themes/wporg-translate-events-2024/blocks/footer/render.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="sitestrunkwordpressorgpublic_htmlwpcontentpluginswporggptranslationeventsthemeswporgtranslateevents2024blocksheaderindexphp"></a>
<div class="addfile"><h4 style="background-color: #eee; color: inherit; margin: 1em 0; padding: 1.3em; font-size: 115%">Added: sites/trunk/wordpress.org/public_html/wp-content/plugins/wporg-gp-translation-events/themes/wporg-translate-events-2024/blocks/header/index.php</h4>
<pre class="diff"><span>
<span class="info" style="display: block; padding: 0 10px; color: #888">--- sites/trunk/wordpress.org/public_html/wp-content/plugins/wporg-gp-translation-events/themes/wporg-translate-events-2024/blocks/header/index.php                           (rev 0)
+++ sites/trunk/wordpress.org/public_html/wp-content/plugins/wporg-gp-translation-events/themes/wporg-translate-events-2024/blocks/header/index.php     2024-07-17 11:19:52 UTC (rev 13906)
</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">+<?php namespace Wporg\TranslationEvents\Theme_2024;
+
+register_block_type(
+       'wporg-translate-events-2024/header',
+       array(
+               'attributes'      => array(
+                       'title' => array(
+                               'type' => 'string',
+                       ),
+               ),
+               // The $attributes argument cannot be removed despite not being used in this function,
+               // because otherwise it won't be available in render.php.
+               // phpcs:ignore Generic.CodeAnalysis.UnusedFunctionParameter.Found
+               'render_callback' => function ( array $attributes ) {
+                       // The site header must be rendered before the call to wp_head() in render.php, so that styles and
+                       // scripts of the referenced blocks are registered.
+                       ob_start();
+                       require __DIR__ . '/site-header.php';
+                       $site_header = do_blocks( ob_get_clean() );
+
+                       ob_start();
+                       require __DIR__ . '/render.php';
+                       return ob_get_clean();
+               },
+       )
+);
</ins><span class="cx" style="display: block; padding: 0 10px">Property changes on: sites/trunk/wordpress.org/public_html/wp-content/plugins/wporg-gp-translation-events/themes/wporg-translate-events-2024/blocks/header/index.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="sitestrunkwordpressorgpublic_htmlwpcontentpluginswporggptranslationeventsthemeswporgtranslateevents2024blocksheaderrenderphp"></a>
<div class="addfile"><h4 style="background-color: #eee; color: inherit; margin: 1em 0; padding: 1.3em; font-size: 115%">Added: sites/trunk/wordpress.org/public_html/wp-content/plugins/wporg-gp-translation-events/themes/wporg-translate-events-2024/blocks/header/render.php</h4>
<pre class="diff"><span>
<span class="info" style="display: block; padding: 0 10px; color: #888">--- sites/trunk/wordpress.org/public_html/wp-content/plugins/wporg-gp-translation-events/themes/wporg-translate-events-2024/blocks/header/render.php                          (rev 0)
+++ sites/trunk/wordpress.org/public_html/wp-content/plugins/wporg-gp-translation-events/themes/wporg-translate-events-2024/blocks/header/render.php    2024-07-17 11:19:52 UTC (rev 13906)
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -0,0 +1,22 @@
</span><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+<?php namespace Wporg\TranslationEvents\Theme_2024;
+
+/** @var string $site_header */
+/** @var array $attributes */
+
+$html_title = implode( ' | ', array( $attributes['title'], __( 'Translation Events', 'wporg-translate-events-2024' ) ) );
+
+?><!DOCTYPE html>
+<html <?php language_attributes(); ?>>
+       <head>
+               <meta charset="<?php bloginfo( 'charset' ); ?>" />
+               <meta name="viewport" content="width=device-width, initial-scale=1" />
+               <title><?php echo esc_html( $html_title ); ?></title>
+               <?php wp_head(); ?>
+       </head>
+       <body <?php body_class(); ?>>
+               <?php wp_body_open(); ?>
+               <div class="wp-site-blocks">
+                       <?php // phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped ?>
+                       <?php echo $site_header; ?>
+                       <div class="wp-block-group alignfull has-white-background-color has-background" style="padding-right:var(--wp--preset--spacing--edge-space);padding-bottom:18px;padding-left:var(--wp--preset--spacing--edge-space)">
+                               <h2 class="wp-block-heading"><?php echo esc_html( $attributes['title'] ); ?></h2>
</ins><span class="cx" style="display: block; padding: 0 10px">Property changes on: sites/trunk/wordpress.org/public_html/wp-content/plugins/wporg-gp-translation-events/themes/wporg-translate-events-2024/blocks/header/render.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="sitestrunkwordpressorgpublic_htmlwpcontentpluginswporggptranslationeventsthemeswporgtranslateevents2024blocksheadersiteheaderphp"></a>
<div class="addfile"><h4 style="background-color: #eee; color: inherit; margin: 1em 0; padding: 1.3em; font-size: 115%">Added: sites/trunk/wordpress.org/public_html/wp-content/plugins/wporg-gp-translation-events/themes/wporg-translate-events-2024/blocks/header/site-header.php</h4>
<pre class="diff"><span>
<span class="info" style="display: block; padding: 0 10px; color: #888">--- sites/trunk/wordpress.org/public_html/wp-content/plugins/wporg-gp-translation-events/themes/wporg-translate-events-2024/blocks/header/site-header.php                             (rev 0)
+++ sites/trunk/wordpress.org/public_html/wp-content/plugins/wporg-gp-translation-events/themes/wporg-translate-events-2024/blocks/header/site-header.php       2024-07-17 11:19:52 UTC (rev 13906)
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -0,0 +1,14 @@
</span><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+<?php namespace Wporg\TranslationEvents\Theme_2024; ?>
+
+<!-- wp:wporg/global-header {"style":{"border":{"bottom":{"color":"var:preset|color|white-opacity-15","style":"solid","width":"1px"}}}} /-->
+
+<!-- wp:wporg/local-navigation-bar {"backgroundColor":"charcoal-2"} -->
+       <!-- wp:site-title {"level":0,"fontSize":"small"} /-->
+       <!-- wp:navigation {"menuSlug":"site-header-menu", "icon":"menu","backgroundColor": "charcoal-2", "overlayBackgroundColor":"charcoal-2","overlayTextColor":"white","layout":{"type":"flex","orientation":"horizontal"},"fontSize":"small"} /-->
+<!-- /wp:wporg/local-navigation-bar -->
+
+<!-- wp:group {"align":"full","style":{"spacing":{"padding":{"top":"18px","bottom":"18px","left":"var:preset|spacing|edge-space","right":"var:preset|spacing|edge-space"}},"backgroundColor":"white","layout":{"type":"flex","flexWrap":"wrap","justifyContent":"space-between"}} -->
+<div class="wp-block-group alignfull has-white-background-color has-background" style="padding-top:18px;padding-right:var(--wp--preset--spacing--edge-space);padding-bottom:18px;padding-left:var(--wp--preset--spacing--edge-space)">
+       <!-- wp:wporg/site-breadcrumbs {"fontSize":"small"} /-->
+</div>
+<!-- /wp:group -->
</ins><span class="cx" style="display: block; padding: 0 10px">Property changes on: sites/trunk/wordpress.org/public_html/wp-content/plugins/wporg-gp-translation-events/themes/wporg-translate-events-2024/blocks/header/site-header.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="sitestrunkwordpressorgpublic_htmlwpcontentpluginswporggptranslationeventsthemeswporgtranslateevents2024blockspageseventsmyeventsindexphp"></a>
<div class="addfile"><h4 style="background-color: #eee; color: inherit; margin: 1em 0; padding: 1.3em; font-size: 115%">Added: sites/trunk/wordpress.org/public_html/wp-content/plugins/wporg-gp-translation-events/themes/wporg-translate-events-2024/blocks/pages/events/my-events/index.php</h4>
<pre class="diff"><span>
<span class="info" style="display: block; padding: 0 10px; color: #888">--- sites/trunk/wordpress.org/public_html/wp-content/plugins/wporg-gp-translation-events/themes/wporg-translate-events-2024/blocks/pages/events/my-events/index.php                           (rev 0)
+++ sites/trunk/wordpress.org/public_html/wp-content/plugins/wporg-gp-translation-events/themes/wporg-translate-events-2024/blocks/pages/events/my-events/index.php     2024-07-17 11:19:52 UTC (rev 13906)
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -0,0 +1,30 @@
</span><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+<?php
+namespace Wporg\TranslationEvents\Theme_2024;
+
+register_block_type(
+       'wporg-translate-events-2024/page-events-my-events',
+       array(
+               'render_callback' => function ( array $attributes ) {
+                       add_filter(
+                               'wporg_block_site_breadcrumbs',
+                               function ( $breadcrumbs ): array {
+                                       return array_merge(
+                                               $breadcrumbs,
+                                               array(
+                                                       array(
+                                                               'title' => __( 'My Events', 'wporg-translate-events-2024' ),
+                                                               'url'   => null,
+                                                       ),
+                                               )
+                                       );
+                               }
+                       );
+
+                       render_page(
+                               __DIR__ . '/render.php',
+                               __( 'My Events', 'wporg-translate-events-2024' ),
+                               $attributes
+                       );
+               },
+       )
+);
</ins><span class="cx" style="display: block; padding: 0 10px">Property changes on: sites/trunk/wordpress.org/public_html/wp-content/plugins/wporg-gp-translation-events/themes/wporg-translate-events-2024/blocks/pages/events/my-events/index.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="sitestrunkwordpressorgpublic_htmlwpcontentpluginswporggptranslationeventsthemeswporgtranslateevents2024blockspageseventsmyeventsrenderphp"></a>
<div class="addfile"><h4 style="background-color: #eee; color: inherit; margin: 1em 0; padding: 1.3em; font-size: 115%">Added: sites/trunk/wordpress.org/public_html/wp-content/plugins/wporg-gp-translation-events/themes/wporg-translate-events-2024/blocks/pages/events/my-events/render.php</h4>
<pre class="diff"><span>
<span class="info" style="display: block; padding: 0 10px; color: #888">--- sites/trunk/wordpress.org/public_html/wp-content/plugins/wporg-gp-translation-events/themes/wporg-translate-events-2024/blocks/pages/events/my-events/render.php                          (rev 0)
+++ sites/trunk/wordpress.org/public_html/wp-content/plugins/wporg-gp-translation-events/themes/wporg-translate-events-2024/blocks/pages/events/my-events/render.php    2024-07-17 11:19:52 UTC (rev 13906)
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -0,0 +1,10 @@
</span><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+<?php
+namespace Wporg\TranslationEvents\Theme_2024;
+
+use Wporg\TranslationEvents\Event\Events_Query_Result;
+
+/** @var Events_Query_Result $events */
+$events = $attributes['events'] ?? array();
+?>
+
+<span>my-events</span>
</ins><span class="cx" style="display: block; padding: 0 10px">Property changes on: sites/trunk/wordpress.org/public_html/wp-content/plugins/wporg-gp-translation-events/themes/wporg-translate-events-2024/blocks/pages/events/my-events/render.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="sitestrunkwordpressorgpublic_htmlwpcontentpluginswporggptranslationeventsthemeswporgtranslateevents2024functionsphp"></a>
<div class="addfile"><h4 style="background-color: #eee; color: inherit; margin: 1em 0; padding: 1.3em; font-size: 115%">Added: sites/trunk/wordpress.org/public_html/wp-content/plugins/wporg-gp-translation-events/themes/wporg-translate-events-2024/functions.php</h4>
<pre class="diff"><span>
<span class="info" style="display: block; padding: 0 10px; color: #888">--- sites/trunk/wordpress.org/public_html/wp-content/plugins/wporg-gp-translation-events/themes/wporg-translate-events-2024/functions.php                             (rev 0)
+++ sites/trunk/wordpress.org/public_html/wp-content/plugins/wporg-gp-translation-events/themes/wporg-translate-events-2024/functions.php       2024-07-17 11:19:52 UTC (rev 13906)
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -0,0 +1,161 @@
</span><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+<?php
+
+namespace Wporg\TranslationEvents\Theme_2024;
+
+use Wporg\TranslationEvents\Urls;
+
+function register_blocks(): void {
+       include_once __DIR__ . '/blocks/header/index.php';
+       include_once __DIR__ . '/blocks/footer/index.php';
+       include_once __DIR__ . '/blocks/pages/events/my-events/index.php';
+}
+
+add_action(
+       'init',
+       function (): void {
+               do_action( 'wporg_translate_events_theme_init' );
+       }
+);
+
+add_action(
+       'wporg_translate_events_theme_init',
+       function (): void {
+               register_blocks();
+
+               add_action(
+                       'wp_head',
+                       function (): void {
+                               add_social_tags(
+                                       esc_html__( 'Translation Events', 'wporg-translate-events-2024' ),
+                                       Urls::events_home(),
+                                       esc_html__( 'WordPress Translation Events', 'wporg-translate-events-2024' ),
+                                       Urls::event_default_image()
+                               );
+
+                               wp_enqueue_style(
+                                       'wporg-translate-events-2024-style',
+                                       get_stylesheet_uri(),
+                                       array(),
+                                       filemtime( __DIR__ . '/style.css' )
+                               );
+                       }
+               );
+       }
+);
+
+add_filter(
+       'wporg_block_navigation_menus',
+       function (): array {
+               return array(
+                       'site-header-menu' => array(
+                               array(
+                                       'label' => esc_html__( 'Events', 'wporg-plugins' ),
+                                       'url'   => 'https://translate.wordpress.org/events/',
+                               ),
+                               array(
+                                       'label' => esc_html__( 'Team', 'wporg-plugins' ),
+                                       'url'   => 'https://make.wordpress.org/polyglots/teams/',
+                               ),
+                               array(
+                                       'label' => esc_html__( 'Requests', 'wporg-plugins' ),
+                                       'url'   => 'https://make.wordpress.org/polyglots/?resolved=unresolved',
+                               ),
+                               array(
+                                       'label' => esc_html__( 'Weekly Chats', 'wporg-plugins' ),
+                                       'url'   => 'https://make.wordpress.org/polyglots/category/weekly-chats/',
+                               ),
+                               array(
+                                       'label' => esc_html__( 'Translate', 'wporg-plugins' ),
+                                       'url'   => 'https://translate.wordpress.org/',
+                               ),
+                               array(
+                                       'label' => esc_html__( 'Handbook', 'wporg-plugins' ),
+                                       'url'   => 'https://make.wordpress.org/polyglots/handbook/',
+                               ),
+                       ),
+               );
+       }
+);
+
+// Declare the base breadcrumbs, which apply to all pages.
+// Pages can add additional levels of breadcrumbs.
+add_filter(
+       'wporg_block_site_breadcrumbs',
+       function (): array {
+               return array(
+                       array(
+                               'url'   => home_url(),
+                               'title' => __( 'Home', 'wporg-translate-events-2024' ),
+                       ),
+                       array(
+                               'url'   => Urls::events_home(),
+                               'title' => __( 'Events', 'wporg-translate-events-2024' ),
+                       ),
+               );
+       }
+);
+
+/**
+ * Add social tags to the head of the page.
+ *
+ * @param string $html_title       The title of the page.
+ * @param string $url              The URL of the page.
+ * @param string $html_description The description of the page.
+ * @param string $image_url        The URL of the image to use.
+ *
+ * @return void
+ */
+function add_social_tags( string $html_title, string $url, string $html_description, string $image_url ) {
+       $meta_tags = array(
+               'name'     => array(
+                       'twitter:card'        => 'summary',
+                       'twitter:site'        => '@WordPress',
+                       'twitter:title'       => esc_attr( $html_title ),
+                       'twitter:description' => esc_attr( $html_description ),
+                       'twitter:creator'     => '@WordPress',
+                       'twitter:image'       => esc_url( $image_url ),
+                       'twitter:image:alt'   => esc_attr( $html_title ),
+               ),
+               'property' => array(
+                       'og:url'              => esc_url( $url ),
+                       'og:title'            => esc_attr( $html_title ),
+                       'og:description'      => esc_attr( $html_description ),
+                       'og:site_name'        => esc_attr( get_bloginfo() ),
+                       'og:image:url'        => esc_url( $image_url ),
+                       'og:image:secure_url' => esc_url( $image_url ),
+                       'og:image:type'       => 'image/png',
+                       'og:image:width'      => '1200',
+                       'og:image:height'     => '675',
+                       'og:image:alt'        => esc_attr( $html_title ),
+               ),
+       );
+
+       foreach ( $meta_tags as $name => $content ) {
+               foreach ( $content as $key => $value ) {
+                       // phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped
+                       echo '<meta ' . esc_attr( $name ) . '="' . esc_attr( $key ) . '" content="' . esc_attr( $value ) . '" />' . "\n";
+               }
+       }
+}
+
+// The $attributes argument cannot be removed despite not being used in the function, because otherwise it won't be
+// in scope for the rendered template.
+// phpcs:ignore Generic.CodeAnalysis.UnusedFunctionParameter.FoundAfterLastUsed
+function render_page( string $template_path, string $title, array $attributes ): void {
+       // The page content must be rendered before the header block, so that styles and scripts of the referenced blocks
+       // are registered.
+       ob_start();
+       require $template_path;
+       $page_content = do_blocks( ob_get_clean() );
+
+       $header_json = wp_json_encode( array( 'title' => $title ) );
+
+       // phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped
+       echo do_blocks(
+               <<<BLOCKS
+               <!-- wp:wporg-translate-events-2024/header $header_json /-->
+                       $page_content
+               <!-- wp:wporg-translate-events-2024/footer /-->
+               BLOCKS
+       );
+}
</ins><span class="cx" style="display: block; padding: 0 10px">Property changes on: sites/trunk/wordpress.org/public_html/wp-content/plugins/wporg-gp-translation-events/themes/wporg-translate-events-2024/functions.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="sitestrunkwordpressorgpublic_htmlwpcontentpluginswporggptranslationeventsthemeswporgtranslateevents2024indexphp"></a>
<div class="addfile"><h4 style="background-color: #eee; color: inherit; margin: 1em 0; padding: 1.3em; font-size: 115%">Added: sites/trunk/wordpress.org/public_html/wp-content/plugins/wporg-gp-translation-events/themes/wporg-translate-events-2024/index.php</h4>
<pre class="diff"><span>
<span class="info" style="display: block; padding: 0 10px; color: #888">--- sites/trunk/wordpress.org/public_html/wp-content/plugins/wporg-gp-translation-events/themes/wporg-translate-events-2024/index.php                         (rev 0)
+++ sites/trunk/wordpress.org/public_html/wp-content/plugins/wporg-gp-translation-events/themes/wporg-translate-events-2024/index.php   2024-07-17 11:19:52 UTC (rev 13906)
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -0,0 +1 @@
</span><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+<?php
</ins><span class="cx" style="display: block; padding: 0 10px">Property changes on: sites/trunk/wordpress.org/public_html/wp-content/plugins/wporg-gp-translation-events/themes/wporg-translate-events-2024/index.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="sitestrunkwordpressorgpublic_htmlwpcontentpluginswporggptranslationeventsthemeswporgtranslateevents2024stylecss"></a>
<div class="addfile"><h4 style="background-color: #eee; color: inherit; margin: 1em 0; padding: 1.3em; font-size: 115%">Added: sites/trunk/wordpress.org/public_html/wp-content/plugins/wporg-gp-translation-events/themes/wporg-translate-events-2024/style.css</h4>
<pre class="diff"><span>
<span class="info" style="display: block; padding: 0 10px; color: #888">--- sites/trunk/wordpress.org/public_html/wp-content/plugins/wporg-gp-translation-events/themes/wporg-translate-events-2024/style.css                         (rev 0)
+++ sites/trunk/wordpress.org/public_html/wp-content/plugins/wporg-gp-translation-events/themes/wporg-translate-events-2024/style.css   2024-07-17 11:19:52 UTC (rev 13906)
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -0,0 +1,11 @@
</span><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+/*!
+Theme Name: WordPress.org Translation Events 2024
+Theme URI: https://wordpress.org
+Author: wordpressdotorg
+Author URI: https://wordpress.org
+Description: Theme for the WordPress.org Translation Events.
+Version: 2024.0.0
+License: GNU General Public License v2 or later
+License URI: http://www.gnu.org/licenses/gpl-2.0.html
+Text Domain: wporg-translate-events-2024
+Template: wporg-parent-2021
</ins><span class="cx" style="display: block; padding: 0 10px">Property changes on: sites/trunk/wordpress.org/public_html/wp-content/plugins/wporg-gp-translation-events/themes/wporg-translate-events-2024/style.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="sitestrunkwordpressorgpublic_htmlwpcontentpluginswporggptranslationeventsthemeswporgtranslateevents2024templatesindexhtml"></a>
<div class="addfile"><h4 style="background-color: #eee; color: inherit; margin: 1em 0; padding: 1.3em; font-size: 115%">Added: sites/trunk/wordpress.org/public_html/wp-content/plugins/wporg-gp-translation-events/themes/wporg-translate-events-2024/templates/index.html</h4>
<pre class="diff"><span>
<span class="info" style="display: block; padding: 0 10px; color: #888">--- sites/trunk/wordpress.org/public_html/wp-content/plugins/wporg-gp-translation-events/themes/wporg-translate-events-2024/templates/index.html                              (rev 0)
+++ sites/trunk/wordpress.org/public_html/wp-content/plugins/wporg-gp-translation-events/themes/wporg-translate-events-2024/templates/index.html        2024-07-17 11:19:52 UTC (rev 13906)
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -0,0 +1 @@
</span><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+<span>hello</span>
</ins><span class="cx" style="display: block; padding: 0 10px">Property changes on: sites/trunk/wordpress.org/public_html/wp-content/plugins/wporg-gp-translation-events/themes/wporg-translate-events-2024/templates/index.html
</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="sitestrunkwordpressorgpublic_htmlwpcontentpluginswporggptranslationeventsthemeswporgtranslateevents2024themejson"></a>
<div class="addfile"><h4 style="background-color: #eee; color: inherit; margin: 1em 0; padding: 1.3em; font-size: 115%">Added: sites/trunk/wordpress.org/public_html/wp-content/plugins/wporg-gp-translation-events/themes/wporg-translate-events-2024/theme.json</h4>
<pre class="diff"><span>
<span class="info" style="display: block; padding: 0 10px; color: #888">--- sites/trunk/wordpress.org/public_html/wp-content/plugins/wporg-gp-translation-events/themes/wporg-translate-events-2024/theme.json                                (rev 0)
+++ sites/trunk/wordpress.org/public_html/wp-content/plugins/wporg-gp-translation-events/themes/wporg-translate-events-2024/theme.json  2024-07-17 11:19:52 UTC (rev 13906)
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -0,0 +1,5 @@
</span><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+{
+       "$schema": "https://schemas.wp.org/trunk/theme.json",
+       "version": 3,
+       "settings": {}
+}
</ins></span></pre></div>
<a id="sitestrunkwordpressorgpublic_htmlwpcontentpluginswporggptranslationeventswporggptranslationeventsphp"></a>
<div class="modfile"><h4 style="background-color: #eee; color: inherit; margin: 1em 0; padding: 1.3em; font-size: 115%">Modified: sites/trunk/wordpress.org/public_html/wp-content/plugins/wporg-gp-translation-events/wporg-gp-translation-events.php</h4>
<pre class="diff"><span>
<span class="info" style="display: block; padding: 0 10px; color: #888">--- sites/trunk/wordpress.org/public_html/wp-content/plugins/wporg-gp-translation-events/wporg-gp-translation-events.php      2024-07-16 16:18:37 UTC (rev 13905)
+++ sites/trunk/wordpress.org/public_html/wp-content/plugins/wporg-gp-translation-events/wporg-gp-translation-events.php        2024-07-17 11:19:52 UTC (rev 13906)
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -82,6 +82,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">        public function __construct() {
</span><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                register_theme_directory( __DIR__ . '/themes' );
+
</ins><span class="cx" style="display: block; padding: 0 10px">                 add_action( 'wp_ajax_submit_event_ajax', array( $this, 'submit_event_ajax' ) );
</span><span class="cx" style="display: block; padding: 0 10px">                add_action( 'wp_ajax_nopriv_submit_event_ajax', array( $this, 'submit_event_ajax' ) );
</span><span class="cx" style="display: block; padding: 0 10px">                add_action( 'wp_enqueue_scripts', array( $this, 'register_translation_event_js' ) );
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -131,11 +133,31 @@
</span><span class="cx" style="display: block; padding: 0 10px">                GP::$router->add( "/events/$slug", array( 'Wporg\TranslationEvents\Routes\Event\Details_Route', 'handle' ) );
</span><span class="cx" style="display: block; padding: 0 10px">                GP::$router->add( "/events/$slug/attendees", array( 'Wporg\TranslationEvents\Routes\Attendee\List_Route', 'handle' ) );
</span><span class="cx" style="display: block; padding: 0 10px">                GP::$router->add( "/events/$id/attendees/remove/$id", array( 'Wporg\TranslationEvents\Routes\Attendee\Remove_Attendee_Route', 'handle' ) );
</span><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                GP::$router->add( "/events/attendance-mode/$id/$id", array( 'Wporg\TranslationEvents\Routes\User\Attendance_Mode_Route', 'handle' ), 'get' );
</ins><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">                $stats_listener = new Stats_Listener( self::get_event_repository() );
</span><span class="cx" style="display: block; padding: 0 10px">                $stats_listener->start();
</span><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">+        public function register_translation_event_js() {
+               wp_register_script(
+                       'translation-events-js',
+                       plugins_url( 'assets/js/translation-events.js', __FILE__ ),
+                       array( 'jquery', 'gp-common' ),
+                       filemtime( __DIR__ . '/assets/js/translation-events.js' ),
+                       false
+               );
+               gp_enqueue_script( 'translation-events-js' );
+               wp_localize_script(
+                       'translation-events-js',
+                       '$translation_event',
+                       array(
+                               'url'          => admin_url( 'admin-ajax.php' ),
+                               '_event_nonce' => wp_create_nonce( self::CPT ),
+                       )
+               );
+       }
+
</ins><span class="cx" style="display: block; padding: 0 10px">         /**
</span><span class="cx" style="display: block; padding: 0 10px">         * Register the event post type.
</span><span class="cx" style="display: block; padding: 0 10px">         */
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -265,21 +287,6 @@
</span><span class="cx" style="display: block; padding: 0 10px">                $form_handler->handle( $_POST );
</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_translation_event_js() {
-               wp_register_style( 'translation-events-css', plugins_url( 'assets/css/translation-events.css', __FILE__ ), array( 'dashicons' ), filemtime( __DIR__ . '/assets/css/translation-events.css' ) );
-               gp_enqueue_styles( 'translation-events-css' );
-               wp_register_script( 'translation-events-js', plugins_url( 'assets/js/translation-events.js', __FILE__ ), array( 'jquery', 'gp-common' ), filemtime( __DIR__ . '/assets/js/translation-events.js' ), false );
-               gp_enqueue_script( 'translation-events-js' );
-               wp_localize_script(
-                       'translation-events-js',
-                       '$translation_event',
-                       array(
-                               'url'          => admin_url( 'admin-ajax.php' ),
-                               '_event_nonce' => wp_create_nonce( self::CPT ),
-                       )
-               );
-       }
-
</del><span class="cx" style="display: block; padding: 0 10px">         /**
</span><span class="cx" style="display: block; padding: 0 10px">         * Handle the event status transition.
</span><span class="cx" style="display: block; padding: 0 10px">         *
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -430,7 +437,7 @@
</span><span class="cx" style="display: block; padding: 0 10px">         * @return array The modified list of meta keys to keep in post revisions.
</span><span class="cx" style="display: block; padding: 0 10px">         */
</span><span class="cx" style="display: block; padding: 0 10px">        public function wp_post_revision_meta_keys( array $keys ): array {
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                $meta_keys_to_keep = array( '_event_start', '_event_end', '_event_timezone', '_hosts' );
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+         $meta_keys_to_keep = array( '_event_start', '_event_end', '_event_timezone', '_hosts', '_event_attendance_mode' );
</ins><span class="cx" style="display: block; padding: 0 10px">                 return array_merge( $keys, $meta_keys_to_keep );
</span><span class="cx" style="display: block; padding: 0 10px">        }
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span></span></pre>
</div>
</div>

</body>
</html>