Changeset 13739 for sites/trunk/wordpress.org/public_html/wp-content/plugins/wporg-gp-translation-events/wporg-gp-translation-events.php
- Timestamp:
- 05/21/2024 11:43:05 AM (2 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
sites/trunk/wordpress.org/public_html/wp-content/plugins/wporg-gp-translation-events/wporg-gp-translation-events.php
r13690 r13739 19 19 namespace Wporg\TranslationEvents; 20 20 21 use DateTime;22 use DateTimeZone;23 21 use Exception; 24 22 use GP; 25 23 use GP_Locales; 26 24 use WP_Post; 27 use WP_Query;28 25 use Wporg\TranslationEvents\Attendee\Attendee; 26 use Wporg\TranslationEvents\Attendee\Attendee_Adder; 29 27 use Wporg\TranslationEvents\Attendee\Attendee_Repository; 30 28 use Wporg\TranslationEvents\Event\Event_Capabilities; … … 64 62 } 65 63 return $attendee_repository; 64 } 65 66 public static function get_attendee_adder(): Attendee_Adder { 67 static $attendee_adder = null; 68 if ( null === $attendee_adder ) { 69 $attendee_adder = new Attendee_Adder( self::get_attendee_repository() ); 70 } 71 return $attendee_adder; 66 72 } 67 73 … … 146 152 'hierarchical' => true, 147 153 'menu_icon' => 'dashicons-calendar', 148 'supports' => array( 'title', 'editor', 'thumbnail', 'revisions' ),154 'supports' => array( 'title', 'editor', 'thumbnail', 'revisions', 'page-attributes' ), 149 155 'rewrite' => array( 'slug' => 'events' ), 150 'show_ui' => false,151 156 ); 152 157 … … 158 163 public function event_meta_boxes() { 159 164 add_meta_box( 'event_dates', 'Event Dates', array( $this, 'event_dates_meta_box' ), self::CPT, 'normal', 'high' ); 165 add_meta_box( 'hosts', 'Hosts', array( $this, 'hosts_meta_box' ), self::CPT, 'normal', 'high' ); 160 166 } 161 167 … … 167 173 public function event_dates_meta_box( WP_Post $post ) { 168 174 wp_nonce_field( 'event_dates_nonce', 'event_dates_nonce' ); 169 $event_start = get_post_meta( $post->ID, '_event_start', true ); 170 $event_end = get_post_meta( $post->ID, '_event_end', true ); 171 echo '<label for="event_start">Start Date: </label>'; 172 echo '<input type="date" id="event_start" name="event_start" value="' . esc_attr( $event_start ) . '" required>'; 173 echo '<label for="event_end">End Date: </label>'; 174 echo '<input type="date" id="event_end" name="event_end" value="' . esc_attr( $event_end ) . '" required>'; 175 $event = self::get_event_repository()->get_event( $post->ID ); 176 ?> 177 <label for="event_start">Start Date (UTC): </label> 178 <input type="datetime-local" id="event_start" name="event_start" value="<?php echo esc_attr( $event->start() ); ?>" required><br> 179 <label for="event_end">End Date (UTC): </label> 180 <input type="datetime-local" id="event_end" name="event_end" value="<?php echo esc_attr( $event->end() ); ?>" required><br> 181 <label for="event-timezone">Timezone: </label> 182 <select id="event-timezone" name="event_timezone" required> 183 <?php 184 echo wp_kses( 185 wp_timezone_choice( $event->timezone()->getName(), get_user_locale() ), 186 array( 187 'optgroup' => array( 'label' => array() ), 188 'option' => array( 189 'value' => array(), 190 'selected' => array(), 191 ), 192 ) 193 ); 194 ?> 195 </select> 196 <?php 197 } 198 199 /** 200 * Output the event dates meta box. 201 * 202 * @param WP_Post $post The current post object. 203 */ 204 public function hosts_meta_box( WP_Post $post ) { 205 $hosts = self::get_attendee_repository()->get_hosts( $post->ID ); 206 $hosts_list = array_map( 207 function ( Attendee $host ) { 208 $user = get_user_by( 'ID', $host->user_id() ); 209 if ( ! $user ) { 210 return '<i>Unknown user id: ' . esc_html( $host->user_id() ) . '</i>'; 211 } 212 return '<a href="' . esc_attr( get_author_posts_url( $host->user_id() ) ) . '">' . esc_html( $user->display_name ) . '</a>'; 213 }, 214 $hosts 215 ); 216 echo wp_kses( 217 implode( ', ', $hosts_list ), 218 array( 219 'a' => array( 'href' => array() ), 220 ) 221 ); 175 222 } 176 223 … … 192 239 } 193 240 } 194 $fields = array( 'event_start', 'event_end' );241 $fields = array( 'event_start', 'event_end', 'event_timezone' ); 195 242 foreach ( $fields as $field ) { 196 243 if ( isset( $_POST[ $field ] ) ) { … … 211 258 212 259 public function register_translation_event_js() { 213 wp_register_style( 'translation-events-css', plugins_url( 'assets/css/translation-events.css', __FILE__ ), array( ), filemtime( __DIR__ . '/assets/css/translation-events.css' ) );260 wp_register_style( 'translation-events-css', plugins_url( 'assets/css/translation-events.css', __FILE__ ), array( 'dashicons' ), filemtime( __DIR__ . '/assets/css/translation-events.css' ) ); 214 261 gp_enqueue_style( 'translation-events-css' ); 215 262 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 ); … … 241 288 } 242 289 if ( 'publish' === $new_status && ( 'new' === $old_status || 'draft' === $old_status ) ) { 243 $event_id = $post->ID; 290 $event = self::get_event_repository()->get_event( $post->ID ); 291 if ( ! $event ) { 292 return; 293 } 294 244 295 $user_id = $post->post_author; 245 296 $attendee_repository = self::get_attendee_repository(); 246 $attendee = $attendee_repository->get_attendee( $event _id, $user_id );297 $attendee = $attendee_repository->get_attendee( $event->id(), $user_id ); 247 298 248 299 if ( null === $attendee ) { 249 $attendee = new Attendee( $event _id, $user_id, true );250 $attendee_repository->insert_attendee($attendee );300 $attendee = new Attendee( $event->id(), $user_id, true ); 301 self::get_attendee_adder()->add_to_event( $event, $attendee ); 251 302 } 252 303 }
Note:
See TracChangeset
for help on using the changeset viewer.
![(please configure the [header_logo] section in trac.ini)](/chrome/site/your_project_logo.png)