Refine pledge meta config and metaboxes

This commit is contained in:
Corey McKrill 2019-10-01 16:23:22 -07:00
parent 9ccf13b9de
commit 80aca01533
No known key found for this signature in database
GPG key ID: C2C0746F7BF17E38
5 changed files with 129 additions and 37 deletions

View file

@ -24,6 +24,18 @@ add_action( 'save_post', __NAMESPACE__ . '\save_pledge', 10, 2 );
*/ */
function get_pledge_meta_config() { function get_pledge_meta_config() {
return array( return array(
'org-description' => array(
'single' => true,
'sanitize_callback' => 'sanitize_text_field',
'show_in_rest' => true,
'php_filter' => FILTER_SANITIZE_STRING
),
'org-domain' => array( // This value is derived programmatically from `org-url`.
'single' => true,
'sanitize_callback' => 'sanitize_text_field',
'show_in_rest' => false,
'php_filter' => FILTER_SANITIZE_STRING,
),
'org-name' => array( 'org-name' => array(
'single' => true, 'single' => true,
'sanitize_callback' => 'sanitize_text_field', 'sanitize_callback' => 'sanitize_text_field',
@ -36,23 +48,11 @@ function get_pledge_meta_config() {
'show_in_rest' => true, 'show_in_rest' => true,
'php_filter' => FILTER_VALIDATE_URL, 'php_filter' => FILTER_VALIDATE_URL,
), ),
'org-domain' => array( 'pledge-email' => array(
'single' => true, 'single' => true,
'sanitize_callback' => 'sanitize_text_field', 'sanitize_callback' => 'sanitize_email',
'show_in_rest' => false, 'show_in_rest' => false,
'php_filter' => FILTER_SANITIZE_STRING, 'php_filter' => FILTER_VALIDATE_EMAIL
),
'org-description' => array(
'single' => true,
'sanitize_callback' => 'sanitize_text_field',
'show_in_rest' => true,
'php_filter' => FILTER_SANITIZE_STRING
),
'admin-wporg-username' => array(
'single' => true,
'sanitize_callback' => 'sanitize_user',
'show_in_rest' => false,
'php_filter' => FILTER_SANITIZE_STRING
), ),
); );
} }
@ -78,13 +78,31 @@ function register_pledge_meta() {
* @return void * @return void
*/ */
function add_meta_boxes() { function add_meta_boxes() {
add_meta_box(
'pledge-email',
__( 'Pledge Email', 'wordpressorg' ),
__NAMESPACE__ . '\render_meta_boxes',
Pledge\CPT_ID,
'normal',
'high'
);
add_meta_box( add_meta_box(
'org-info', 'org-info',
__( 'Organization Information', 'wordpressorg' ), __( 'Organization Information', 'wordpressorg' ),
__NAMESPACE__ . '\render_meta_boxes', __NAMESPACE__ . '\render_meta_boxes',
Pledge\CPT_ID, Pledge\CPT_ID,
'normal', 'normal',
'default' 'high'
);
add_meta_box(
'pledge-contributors',
__( 'Contributors', 'wordpressorg' ),
__NAMESPACE__ . '\render_meta_boxes',
Pledge\CPT_ID,
'normal',
'high'
); );
} }
@ -95,11 +113,26 @@ function add_meta_boxes() {
* @param array $box * @param array $box
*/ */
function render_meta_boxes( $pledge, $box ) { function render_meta_boxes( $pledge, $box ) {
$editable = current_user_can( 'edit_pledge', $pledge->ID );
switch ( $box['id'] ) { switch ( $box['id'] ) {
case 'pledge-email':
$email = get_post_meta( $pledge->ID, META_PREFIX . 'pledge-email', true );
$confirmed = get_post_meta( $pledge->ID, META_PREFIX . 'pledge-email-confirmed', true );
break;
case 'org-info': case 'org-info':
require dirname( __DIR__ ) . '/views/metabox-' . sanitize_file_name( $box['id'] ) . '.php'; $data = array();
foreach ( get_pledge_meta_config() as $key => $config ) {
$data[ $key ] = get_post_meta( $pledge->ID, META_PREFIX . $key, $config['single'] );
}
break;
case 'pledge-contributors':
break; break;
} }
require dirname( __DIR__ ) . '/views/metabox-' . sanitize_file_name( $box['id'] ) . '.php';
} }
/** /**

View file

@ -61,7 +61,7 @@ function register_custom_post_type() {
$args = array( $args = array(
'labels' => $labels, 'labels' => $labels,
'supports' => array( 'title', 'thumbnail', 'author', 'revisions' ), 'supports' => array( 'title', 'thumbnail' ),
'hierarchical' => false, 'hierarchical' => false,
'public' => true, 'public' => true,
'show_ui' => true, 'show_ui' => true,

View file

@ -1,39 +1,63 @@
<table> <?php
/** @var bool $editable */
/** @var array $data */
?>
<table class="form-table">
<tbody> <tbody>
url
total # employees
# employees pledged at least part time
total # hours pleged
what else was there?
<?php /*
<tr> <tr>
<th> <th>
<label for="_5ftf_wporg_username"> <label for="5ftf-org-name">
<?php _e( 'WordPress.org Username:', 'wordpressorg' ); ?> <?php esc_html_e( 'Organization Name', 'wordpressorg' ); ?>
</label> </label>
</th> </th>
<td> <td>
<input id="_5ftf_wporg_username" name="_5ftf_wporg_username" type="text" value="<?php echo esc_attr( $company->_5ftf_wporg_username ); ?>" required class="regular-text" /> <input
type="text"
<?php if ( $avatar_url ) : ?> class="large-text"
<img src="<?php echo esc_url( $avatar_url ); ?>" width="95" height="95" /> id="5ftf-org-name"
<?php endif; ?> name="org-name"
value="<?php echo esc_attr( $data['org-name'] ); ?>"
required
<?php echo ( $editable ) ? '' : 'readonly'; ?>
/>
</td> </td>
</tr> </tr>
<tr> <tr>
<th> <th>
<label for="_5ftf_hours_per_month"> <label for="5ftf-org-url">
<?php _e( 'Hours per Month:', 'wordpressorg' ); ?> <?php esc_html_e( 'Website Address', 'wordpressorg' ); ?>
</label> </label>
</th> </th>
<td> <td>
<input id="_5ftf_hours_per_month" name="_5ftf_hours_per_month" type="number" value="<?php echo esc_attr( $company->_5ftf_hours_per_month ); ?>" required class="regular-text" /> <input
type="url"
class="large-text"
id="5ftf-org-url"
name="org-url"
value="<?php echo esc_attr( $data['org-url'] ); ?>"
required
<?php echo ( $editable ) ? '' : 'readonly'; ?>
/>
</td>
</tr>
<tr>
<th>
<label for="5ftf-org-description">
<?php _e( 'Organization Blurb', 'wordpressorg' ); ?>
</label>
</th>
<td>
<textarea
class="large-text"
id="5ftf-org-description"
name="org-description"
required
<?php echo ( $editable ) ? '' : 'readonly'; ?>
>
<?php echo esc_html( $data['org-description'] ); ?>
</textarea>
</td> </td>
</tr> </tr>
*/ ?>
</tbody> </tbody>
</table> </table>

View file

@ -0,0 +1,5 @@
<?php
?>
TBD

View file

@ -0,0 +1,30 @@
<?php
/** @var bool $editable */
/** @var string $email */
/** @var bool $confirmed */
?>
<label for="5ftf-pledge-email" class="screen-reader-text">
<?php esc_html_e( 'Email', 'wordpressorg' ); ?>
</label>
<input
type="text"
class="regular-text"
id="5ftf-pledge-email"
name="org-pledge-email"
value="<?php echo esc_attr( $data['pledge-email'] ); ?>"
required
<?php echo ( $editable ) ? '' : 'readonly'; ?>
/>
<?php if ( $confirmed ) : ?>
<span class="dashicons dashicons-yes-alt" aria-hidden="true"></span>
<?php esc_html_e( 'Confirmed', 'wporg' ); ?>
<?php else : ?>
<span class="dashicons dashicons-warning" aria-hidden="true"></span>
<?php esc_html_e( 'Unconfirmed', 'wporg' ); ?>
<button class="button-secondary">
<?php esc_html_e( 'Resend confirmation', 'wporg' ); ?>
</button>
<?php endif; ?>