Making WordPress.org


Ignore:
Timestamp:
05/21/2024 11:43:05 AM (2 years ago)
Author:
amieiro
Message:

Translate: Sync "Translation Events" from GitHub

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  
    1919namespace Wporg\TranslationEvents;
    2020
    21 use DateTime;
    22 use DateTimeZone;
    2321use Exception;
    2422use GP;
    2523use GP_Locales;
    2624use WP_Post;
    27 use WP_Query;
    2825use Wporg\TranslationEvents\Attendee\Attendee;
     26use Wporg\TranslationEvents\Attendee\Attendee_Adder;
    2927use Wporg\TranslationEvents\Attendee\Attendee_Repository;
    3028use Wporg\TranslationEvents\Event\Event_Capabilities;
     
    6462                }
    6563                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;
    6672        }
    6773
     
    146152                        'hierarchical' => true,
    147153                        'menu_icon'    => 'dashicons-calendar',
    148                         'supports'     => array( 'title', 'editor', 'thumbnail', 'revisions' ),
     154                        'supports'     => array( 'title', 'editor', 'thumbnail', 'revisions', 'page-attributes' ),
    149155                        'rewrite'      => array( 'slug' => 'events' ),
    150                         'show_ui'      => false,
    151156                );
    152157
     
    158163        public function event_meta_boxes() {
    159164                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' );
    160166        }
    161167
     
    167173        public function event_dates_meta_box( WP_Post $post ) {
    168174                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                );
    175222        }
    176223
     
    192239                        }
    193240                }
    194                 $fields = array( 'event_start', 'event_end' );
     241                $fields = array( 'event_start', 'event_end', 'event_timezone' );
    195242                foreach ( $fields as $field ) {
    196243                        if ( isset( $_POST[ $field ] ) ) {
     
    211258
    212259        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' ) );
    214261                gp_enqueue_style( 'translation-events-css' );
    215262                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 );
     
    241288                }
    242289                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
    244295                        $user_id             = $post->post_author;
    245296                        $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 );
    247298
    248299                        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 );
    251302                        }
    252303                }
Note: See TracChangeset for help on using the changeset viewer.