LLMS_Admin_Settings::output_field( array $field )
Output fields
Description Description
Parameters Parameters
- $field
-
(array) (Required) array of field settings
Return Return
(void)
Source Source
File: includes/admin/class.llms.admin.settings.php
public static function output_field( $field ) { // set missing values with defaults $field = self::set_field_defaults( $field ); $custom_attributes_field = array_key_exists( 'custom_attributes', $field ) ? $field['custom_attributes'] : array(); // setup custom attributes $custom_attributes = self::format_field_custom_attributes( $custom_attributes_field ); // setup field description and tooltip // this will return an associative array of with the keys "description" and "tooltip" extract( self::set_field_descriptions( $field ) ); // allow using value not retrieved via this class if ( isset( $field['value'] ) ) { $option_value = $field['value']; } else { // get the option value $option_value = self::get_option( $field['id'], $field['default'] ); } $disabled_class = ( isset( $field['disabled'] ) && true === $field['disabled'] ) ? 'llms-disabled-field' : ''; // Switch based on type switch ( $field['type'] ) { // Section Titles case 'title': if ( ! empty( $field['title'] ) ) { echo '<p class="llms-label">' . esc_html( $field['title'] ) . '</p>'; } if ( ! empty( $field['desc'] ) ) { echo '<p class="llms-description">' . wpautop( wptexturize( wp_kses_post( $field['desc'] ) ) ) . '</p>'; } echo '<table class="form-table">' . "\n\n"; if ( ! empty( $field['id'] ) ) { do_action( 'lifterlms_settings_' . sanitize_title( $field['id'] ) ); } break; case 'table': echo '<tr valign="top" class="' . $disabled_class . '"><td>'; $field['table']->get_results(); echo $field['table']->get_table_html(); echo '</td></tr>'; break; case 'subtitle': if ( ! empty( $field['title'] ) ) { echo '<tr valign="top" class="' . $disabled_class . '"><td colspan="2"> <h3 class="llms-subtitle">' . $field['title'] . '</h3>'; if ( ! empty( $field['desc'] ) ) { echo '<p>' . $field['desc'] . '</p>'; } echo '</tr></td>'; } break; case 'desc': if ( ! empty( $field['desc'] ) ) { echo '<th colspan="2" style="font-weight: normal;">' . wpautop( wptexturize( wp_kses_post( $field['desc'] ) ) ) . '</th>'; } break; case 'custom-html': if ( ! empty( $field['value'] ) ) { echo '<tr valign="top" class="' . $disabled_class . '"><td colspan="2">' . $field['value'] . '</tr></td>'; } break; case 'custom-html-no-wrap': if ( ! empty( $field['value'] ) ) { echo $field['value']; } break; case 'sectionstart': if ( ! empty( $field['id'] ) ) { do_action( 'lifterlms_settings_' . sanitize_title( $field['id'] ) . '_before' ); echo '<div class="llms-setting-group ' . $field['class'] . '">'; do_action( 'lifterlms_settings_' . sanitize_title( $field['id'] ) . '_start' ); } break; case 'sectionend': if ( ! empty( $field['id'] ) ) { do_action( 'lifterlms_settings_' . sanitize_title( $field['id'] ) . '_end' ); } echo '</table>'; echo '</div>'; if ( ! empty( $field['id'] ) ) { do_action( 'lifterlms_settings_' . sanitize_title( $field['id'] ) . '_after' ); } break; case 'button': $name = isset( $field['name'] ) ? $field['name'] : 'save'; echo '<tr valign="top" class="' . $disabled_class . '"><th> <label for="' . esc_attr( $field['id'] ) . '">' . esc_html( $field['title'] ) . '</label> ' . $tooltip . ' </th>'; echo '<td class="forminp forminp-' . sanitize_title( $field['type'] ) . '">'; echo '<div id="llms-form-wrapper">'; echo $description . '<br><br>'; echo '<input name="' . $name . '" class="llms-button-primary" type="submit" value="' . esc_attr( $field['value'] ) . '" />'; echo '</div>'; echo '</td></tr>'; //get_submit_button( 'Filter Results', 'primary', 'llms_search', true, array( 'id' => 'llms_analytics_search' ) ); break; case 'hidden': echo '<th></th>'; echo '<td><input type="hidden" name="' . esc_attr( $field['id'] ) . '" id="' . esc_attr( $field['id'] ) . '" value="' . esc_attr( $field['value'] ) . '">'; break; case 'text': case 'email': case 'number': case 'password': $type = $field['type']; $class = ''; $secure_val = isset( $field['secure_option'] ) ? llms_get_secure_option( $field['secure_option'], false ) : false; $option_value = ( false !== $secure_val ) ? str_repeat( '*', strlen( $secure_val ) ) : $option_value; ?><tr valign="top" class="<?php echo $disabled_class; ?>"> <th> <label for="<?php echo esc_attr( $field['id'] ); ?>"><?php echo esc_html( $field['title'] ); ?></label> <?php echo $tooltip; ?> </th> <td class="forminp forminp-<?php echo sanitize_title( $field['type'] ) ?>"> <input name="<?php echo esc_attr( $field['id'] ); ?>" id="<?php echo esc_attr( $field['id'] ); ?>" type="<?php echo esc_attr( $type ); ?>" style="<?php echo esc_attr( $field['css'] ); ?>" value="<?php echo esc_attr( $option_value ); ?>" class="<?php echo esc_attr( $field['class'] ); ?>" <?php echo $secure_val ? 'disabled="disabled"' : ''; ?> <?php echo implode( ' ', $custom_attributes ); ?> /> <?php echo $description; ?> <?php echo isset( $field['after_html'] ) ? $field['after_html'] : ''; ?> </td> </tr><?php break; // Textarea case 'textarea': ?><tr valign="top" class="<?php echo $disabled_class; ?>"> <th> <label for="<?php echo esc_attr( $field['id'] ); ?>"><?php echo esc_html( $field['title'] ); ?></label> <?php echo $tooltip; ?> </th> <td class="forminp forminp-<?php echo sanitize_title( $field['type'] ) ?>"> <textarea name="<?php echo esc_attr( $field['id'] ); ?>" id="<?php echo esc_attr( $field['id'] ); ?>" style="<?php echo esc_attr( $field['css'] ); ?>" class="<?php echo esc_attr( $field['class'] ); ?>" <?php echo implode( ' ', $custom_attributes ); ?> ><?php echo esc_textarea( $option_value ); ?></textarea> <?php echo $description; ?> </td> </tr><?php break; case 'wpeditor': $editor_settings = isset( $field['editor_settings'] ) ? $field['editor_settings'] : array(); ?><tr valign="top" class="<?php echo $disabled_class; ?>"> <th> <label for="<?php echo esc_attr( $field['id'] ); ?>"><?php echo esc_html( $field['title'] ); ?></label> <?php echo $tooltip; ?> </th> <td class="forminp forminp-<?php echo sanitize_title( $field['type'] ) ?>"> <?php wp_editor( $option_value, $field['id'], $editor_settings ); ?> <?php echo $description; ?> </td> </tr><?php break; // Select boxes case 'select' : case 'multiselect' : ?><tr valign="top" class="<?php echo $disabled_class; ?>"> <th> <label for="<?php echo esc_attr( $field['id'] ); ?>"><?php echo esc_html( $field['title'] ); ?></label> <?php echo $tooltip; ?> </th> <td class="forminp forminp-<?php echo sanitize_title( $field['type'] ) ?>"> <select name="<?php echo esc_attr( $field['id'] ); ?><?php if ( 'multiselect' == $field['type'] ) { echo '[]'; } ?>" id="<?php echo esc_attr( $field['id'] ); ?>" style="<?php echo esc_attr( $field['css'] ); ?>" class="<?php echo esc_attr( $field['class'] ); ?>" <?php echo implode( ' ', $custom_attributes ); ?> <?php if ( 'multiselect' == $field['type'] ) { echo 'multiple="multiple"'; } ?> > <?php foreach ( $field['options'] as $key => $val ) { // convert an array from llms_make_select2_post_array() if ( is_array( $val ) ) { $key = $val['key']; $val = $val['title']; } ?> <option value="<?php echo esc_attr( $key ); ?>" <?php if ( is_array( $option_value ) ) { selected( in_array( $key, $option_value ), true ); } else { selected( $option_value, $key ); } ?>><?php echo $val ?></option> <?php } ?> </select> <?php echo $description; ?> </td> </tr><?php break; // Radio inputs case 'radio' : ?><tr valign="top" class="<?php echo $disabled_class; ?>"> <th> <label for="<?php echo esc_attr( $field['id'] ); ?>"><?php echo esc_html( $field['title'] ); ?></label> <?php echo $tooltip; ?> </th> <td class="forminp forminp-<?php echo sanitize_title( $field['type'] ) ?>"> <fieldset> <?php echo $description; ?> <ul> <?php foreach ( $field['options'] as $key => $val ) { ?> <li> <label><input name="<?php echo esc_attr( $field['id'] ); ?>" value="<?php echo $key; ?>" type="radio" style="<?php echo esc_attr( $field['css'] ); ?>" class="<?php echo esc_attr( $field['class'] ); ?>" <?php echo implode( ' ', $custom_attributes ); ?> <?php checked( $key, $option_value ); ?> /> <?php echo $val ?></label> </li> <?php } ?> </ul> </fieldset> </td> </tr><?php break; // Checkbox input case 'checkbox' : $visbility_class = array(); if ( ! isset( $field['hide_if_checked'] ) ) { $field['hide_if_checked'] = false; } if ( ! isset( $field['show_if_checked'] ) ) { $field['show_if_checked'] = false; } if ( 'yes' == $field['hide_if_checked'] || 'yes' == $field['show_if_checked'] ) { $visbility_class[] = 'hidden_option'; } if ( 'option' == $field['hide_if_checked'] ) { $visbility_class[] = 'hide_options_if_checked'; } if ( 'option' == $field['show_if_checked'] ) { $visbility_class[] = 'show_options_if_checked'; } if ( ! isset( $field['checkboxgroup'] ) || 'start' == $field['checkboxgroup'] ) { ?> <tr valign="top" class="<?php echo esc_attr( implode( ' ', $visbility_class ) ); ?> <?php echo $disabled_class; ?>"> <th><?php echo esc_html( $field['title'] ) ?></th> <td class="forminp forminp-checkbox"> <fieldset> <?php } else { ?> <fieldset class="<?php echo esc_attr( implode( ' ', $visbility_class ) ); ?>"> <?php } if ( ! empty( $field['title'] ) ) { ?> <legend class="screen-reader-text"><span><?php echo esc_html( $field['title'] ) ?></span></legend> <?php } ?> <label for="<?php echo $field['id'] ?>"> <input name="<?php echo esc_attr( $field['id'] ); ?>" id="<?php echo esc_attr( $field['id'] ); ?>" type="checkbox" value="1" <?php checked( $option_value, 'yes' ); ?> <?php echo implode( ' ', $custom_attributes ); ?> /> <?php echo $description ?> </label> <?php echo $tooltip; ?> <?php if ( ! isset( $field['checkboxgroup'] ) || 'end' == $field['checkboxgroup'] ) { ?> </fieldset> </td> </tr> <?php } else { ?> </fieldset> <?php } break; case 'image': $type = $field['type']; $class = ''; if ( $option_value ) { // media lib object ID if ( is_numeric( $option_value ) ) { $size = isset( $field['image_size'] ) ? $field['image_size'] : 'medium'; $attachment = wp_get_attachment_image_src( $option_value, $size ); $src = $attachment[0]; } else { // raw img src $src = $option_value; } } else { $src = ''; } ?><tr valign="top" class="<?php echo $disabled_class; ?>"> <th> <label for="<?php echo esc_attr( $field['id'] ); ?>"><?php echo esc_html( $field['title'] ); ?></label> <?php echo $tooltip; ?> </th> <td class="forminp forminp-<?php echo sanitize_title( $field['type'] ) ?>"> <img class="llms-image-field-preview" src="<?php echo $src; ?>"> <button class="llms-button-secondary llms-image-field-upload" data-id="<?php echo esc_attr( $field['id'] ); ?>" type="button"> <span class="dashicons dashicons-admin-media"></span> <?php _e( 'Upload', 'lifterlms' ); ?> </button> <button class="llms-button-danger llms-image-field-remove<?php echo ( ! $src ) ? ' hidden' : '' ?>" data-id="<?php echo esc_attr( $field['id'] ); ?>" type="button"> <span class="dashicons dashicons-no"></span> </button> <input name="<?php echo esc_attr( $field['id'] ); ?>" id="<?php echo esc_attr( $field['id'] ); ?>" type="hidden" style="<?php echo esc_attr( $field['css'] ); ?>" value="<?php echo esc_attr( $option_value ); ?>" class="<?php echo esc_attr( $field['class'] ); ?>" <?php echo implode( ' ', $custom_attributes ); ?> /> <?php echo $description; ?> <?php echo isset( $field['after_html'] ) ? $field['after_html'] : ''; ?> </td> </tr><?php break; // Single page selects case 'single_select_page' : $args = array( 'name' => $field['id'], 'id' => $field['id'], 'sort_column' => 'menu_order', 'sort_order' => 'ASC', 'show_option_none' => ' ', 'class' => $field['class'], 'echo' => false, 'selected' => absint( self::get_option( $field['id'] ) ), ); if ( isset( $field['args'] ) ) { $args = wp_parse_args( $field['args'], $args ); } ?><tr valign="top" class="single_select_page"> <th><?php echo esc_html( $field['title'] ) ?> <?php echo $tooltip; ?></th> <td class="forminp"> <?php echo str_replace( ' id=', " data-placeholder='" . __( 'Select a page…', 'lifterlms' ) . "' style='" . $field['css'] . "' class='" . $field['class'] . "' id=", wp_dropdown_pages( $args ) ); ?> <?php echo $description; ?> </td> </tr><?php break; // Single page selects case 'single_select_membership' : $args = array( 'posts_per_page' => -1, 'post_type' => 'llms_membership', 'nopaging' => true, 'post_status' => 'publish', 'class' => $field['class'], 'selected' => absint( self::get_option( $field['id'] ) ), ); $posts = get_posts( $args ); if ( isset( $field['args'] ) ) { $args = wp_parse_args( $field['args'], $args ); } ?><tr valign="top" class="single_select_membership"> <th><?php echo esc_html( $field['title'] ) ?> <?php echo $tooltip; ?></th> <td class="forminp"> <select class="<?php echo $args['class']; ?>" style="<?php echo $field['css']; ?>" name="lifterlms_membership_required" id="lifterlms_membership_required"> <option value=""> <?php _e( 'None', 'lifterlms' ); ?></option> <?php foreach ( $posts as $post ) : setup_postdata( $post ); if ( $args['selected'] == $post->ID ) { $selected = 'selected'; } else { $selected = ''; } ?> <option value="<?php echo $post->ID; ?>" <?php echo $selected; ?> ><?php echo $post->post_title ?></option> <?php endforeach; ?> </select> </td> </tr><?php break; // Default: run an action default: do_action( 'lifterlms_admin_field_' . $field['type'], $field, $option_value, $description, $tooltip, $custom_attributes ); break; }// End switch(). }
Expand full source code Collapse full source code View on GitHub