Make Settings class render fields in a more WC-friendly way

This commit is contained in:
Jorge A. Torres 2020-10-15 15:42:02 -03:00
parent 09f145069e
commit 5ad190aed0
2 changed files with 28 additions and 12 deletions

View file

@ -78,4 +78,13 @@
#field-client_id_production.onboarded.hide, #field-client_id_production.onboarded.hide,
#field-client_secret_production.onboarded.hide { #field-client_secret_production.onboarded.hide {
display:none; display:none;
} }
/* Probably not the best location for this but will do until there's a general purpose settings CSS file. */
.ppcp-settings-field-heading td, .ppcp-settings-field-heading th {
padding-left: 0;
}
.woocommerce_page_wc-settings h3.ppcp-subheading {
font-size: 1.1em;
}

View file

@ -151,7 +151,7 @@ class SettingsRenderer {
class="%s" class="%s"
name="%s" name="%s"
>%s</select>', >%s</select>',
esc_attr( implode( ' ', $config['class'] ) ), esc_attr( implode( ' ', isset( $config['input_class'] ) ? $config['input_class'] : array() ) ),
esc_attr( $key ) . '[]', esc_attr( $key ) . '[]',
implode( '', $options ) implode( '', $options )
); );
@ -241,7 +241,7 @@ class SettingsRenderer {
} }
$html = sprintf( $html = sprintf(
'<h3 class="%s">%s</h3>', '<h3 class="wc-settings-sub-title %s">%s</h3>',
esc_attr( implode( ' ', $config['class'] ) ), esc_attr( implode( ' ', $config['class'] ) ),
esc_html( $config['heading'] ) esc_html( $config['heading'] )
); );
@ -295,33 +295,40 @@ class SettingsRenderer {
$key = 'ppcp[' . $field . ']'; $key = 'ppcp[' . $field . ']';
$id = 'ppcp-' . $field; $id = 'ppcp-' . $field;
$config['id'] = $id; $config['id'] = $id;
$th_td = 'ppcp-heading' !== $config['type'] ? 'td' : 'th'; $th_td = 'ppcp-heading' !== $config['type'] ? 'td' : 'td';
$colspan = 'ppcp-heading' !== $config['type'] ? 1 : 2; $colspan = 'ppcp-heading' !== $config['type'] ? 1 : 2;
$classes = isset( $config['classes'] ) ? $config['classes'] : array(); $classes = isset( $config['classes'] ) ? $config['classes'] : array();
$classes[] = sprintf( 'ppcp-settings-field-%s', str_replace( 'ppcp-', '', $config['type'] ) );
$description = isset( $config['description'] ) ? $config['description'] : '';
unset( $config['description'] );
?> ?>
<tr valign="top" id="<?php echo esc_attr( 'field-' . $field ); ?>" class="<?php echo esc_attr( implode( ' ', $classes ) ); ?>"> <tr valign="top" id="<?php echo esc_attr( 'field-' . $field ); ?>" class="<?php echo esc_attr( implode( ' ', $classes ) ); ?>">
<?php if ( 'ppcp-heading' !== $config['type'] ) : ?> <?php if ( 'ppcp-heading' !== $config['type'] ) : ?>
<th> <th scope="row">
<label <label
for="<?php echo esc_attr( $id ); ?>" for="<?php echo esc_attr( $id ); ?>"
><?php echo esc_html( $config['title'] ); ?></label> ><?php echo esc_html( $config['title'] ); ?></label>
<?php if ( isset( $config['desc_tip'] ) && $config['desc_tip'] ) : ?> <?php if ( isset( $config['desc_tip'] ) && $config['desc_tip'] ) : ?>
<span <span
class="woocommerce-help-tip" class="woocommerce-help-tip"
data-tip="<?php echo esc_attr( $config['description'] ); ?>" data-tip="<?php echo esc_attr( $description ); ?>"
></span> ></span>
<?php <?php
unset( $config['description'] ); $description = '';
endif; endif;
?> ?>
</th> </th>
<?php endif; ?> <?php endif; ?>
<<?php echo esc_attr( $th_td ); ?> colspan="<?php echo (int) $colspan; ?>"> <<?php echo esc_attr( $th_td ); ?> colspan="<?php echo (int) $colspan; ?>">
<?php <?php
'ppcp-text' === $config['type'] ? 'ppcp-text' === $config['type'] ?
$this->render_text( $config ) $this->render_text( $config )
: woocommerce_form_field( $key, $config, $value ); : woocommerce_form_field( $key, $config, $value );
?> ?>
<?php if ( $description ) : ?>
<p class="<?php echo 'ppcp-heading' === $config['type'] ? '' : 'description'; ?>"><?php echo wp_kses_post( $description ); ?></p>
<?php endif; ?>
</<?php echo esc_attr( $th_td ); ?>> </<?php echo esc_attr( $th_td ); ?>>
</tr> </tr>
<?php <?php