mirror of
https://gh.wpcy.net/https://github.com/presscustomizr/hueman.git
synced 2026-04-28 22:47:39 +08:00
472 lines
15 KiB
PHP
472 lines
15 KiB
PHP
<?php if ( ! defined( 'OT_VERSION' ) ) exit( 'No direct script access allowed' );
|
|
/**
|
|
* Functions used to build each option type.
|
|
*
|
|
* @package OptionTree
|
|
* @author Derek Herman <derek@valendesigns.com>
|
|
* @copyright Copyright (c) 2013, Derek Herman
|
|
* @since 2.0
|
|
*/
|
|
|
|
/**
|
|
* Builds the HTML for each of the available option types by calling those
|
|
* function with call_user_func and passing the arguments to the second param.
|
|
*
|
|
* All fields are required!
|
|
*
|
|
* @param array $args The array of arguments are as follows:
|
|
* @param string $type Type of option.
|
|
* @param string $field_id The field ID.
|
|
* @param string $field_name The field Name.
|
|
* @param mixed $field_value The field value is a string or an array of values.
|
|
* @param string $field_desc The field description.
|
|
* @param string $field_std The standard value.
|
|
* @param string $field_class Extra CSS classes.
|
|
* @param array $field_choices The array of option choices.
|
|
* @param array $field_settings The array of settings for a list item.
|
|
* @return string
|
|
*
|
|
* @access public
|
|
* @since 2.0
|
|
*/
|
|
if ( ! function_exists( 'ot_display_by_type' ) ) {
|
|
|
|
function ot_display_by_type( $args = array() ) {
|
|
|
|
/* allow filters to be executed on the array */
|
|
$args = apply_filters( 'ot_display_by_type', $args );
|
|
|
|
/* build the function name */
|
|
$function_name_by_type = str_replace( '-', '_', 'ot_type_' . $args['type'] );
|
|
|
|
/* call the function & pass in arguments array */
|
|
if ( function_exists( $function_name_by_type ) ) {
|
|
call_user_func( $function_name_by_type, $args );
|
|
} else {
|
|
echo '<p>' . 'Sorry, this function does not exist' . '</p>';
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
/**
|
|
* Radio Images option type.
|
|
*
|
|
* See @ot_display_by_type to see the full list of available arguments.
|
|
*
|
|
* @param array An array of arguments.
|
|
* @return string
|
|
*
|
|
* @access public
|
|
* @since 2.0
|
|
*/
|
|
if ( ! function_exists( 'ot_type_radio_image' ) ) {
|
|
|
|
function ot_type_radio_image( $args = array() ) {
|
|
|
|
/* turns arguments array into variables */
|
|
extract( $args );
|
|
|
|
/* verify a description */
|
|
$has_desc = $field_desc ? true : false;
|
|
|
|
/* format setting outer wrapper */
|
|
echo '<div class="format-setting type-radio-image ' . ( $has_desc ? 'has-desc' : 'no-desc' ) . '">';
|
|
|
|
/* description */
|
|
echo $has_desc ? '<div class="description">' . htmlspecialchars_decode( $field_desc ) . '</div>' : '';
|
|
|
|
/* format setting inner wrapper */
|
|
echo '<div class="format-setting-inner">';
|
|
|
|
/**
|
|
* load the default filterable images if nothing
|
|
* has been set in the choices array.
|
|
*/
|
|
if ( empty( $field_choices ) )
|
|
$field_choices = ot_radio_images( $field_id );
|
|
|
|
/* build radio image */
|
|
foreach ( (array) $field_choices as $key => $choice ) {
|
|
|
|
$src = str_replace( 'OT_URL', OT_URL, $choice['src'] );
|
|
$src = str_replace( 'OT_THEME_URL', OT_THEME_URL, $src );
|
|
|
|
/* make radio image source filterable */
|
|
$src = apply_filters( 'ot_type_radio_image_src', $src, $field_id );
|
|
|
|
/**
|
|
* Filter the image attributes.
|
|
*
|
|
* @since 2.5.3
|
|
*
|
|
* @param string $attributes The image attributes.
|
|
* @param string $field_id The field ID.
|
|
* @param array $choice The choice.
|
|
*/
|
|
$attributes = apply_filters( 'ot_type_radio_image_attributes', '', $field_id, $choice );
|
|
|
|
echo '<div class="option-tree-ui-radio-images">';
|
|
echo '<p style="display:none"><input type="radio" name="' . esc_attr( $field_name ) . '" id="' . esc_attr( $field_id ) . '-' . esc_attr( $key ) . '" value="' . esc_attr( $choice['value'] ) . '"' . checked( $field_value, $choice['value'], false ) . ' class="option-tree-ui-radio option-tree-ui-images" /><label for="' . esc_attr( $field_id ) . '-' . esc_attr( $key ) . '">' . esc_attr( $choice['label'] ) . '</label></p>';
|
|
echo '<img ' . $attributes . ' src="' . esc_url( $src ) . '" alt="' . esc_attr( $choice['label'] ) .'" title="' . esc_attr( $choice['label'] ) .'" class="option-tree-ui-radio-image ' . esc_attr( $field_class ) . ( $field_value == $choice['value'] ? ' option-tree-ui-radio-image-selected' : '' ) . '" />';
|
|
echo '</div>';
|
|
}
|
|
|
|
echo '</div>';
|
|
|
|
echo '</div>';
|
|
|
|
}
|
|
|
|
}
|
|
|
|
/**
|
|
* Select option type.
|
|
*
|
|
* See @ot_display_by_type to see the full list of available arguments.
|
|
*
|
|
* @param array An array of arguments.
|
|
* @return string
|
|
*
|
|
* @access public
|
|
* @since 2.0
|
|
*/
|
|
if ( ! function_exists( 'ot_type_select' ) ) {
|
|
|
|
function ot_type_select( $args = array() ) {
|
|
|
|
/* turns arguments array into variables */
|
|
extract( $args );
|
|
|
|
/* verify a description */
|
|
$has_desc = $field_desc ? true : false;
|
|
|
|
/* format setting outer wrapper */
|
|
echo '<div class="format-setting type-select ' . ( $has_desc ? 'has-desc' : 'no-desc' ) . '">';
|
|
|
|
/* description */
|
|
echo $has_desc ? '<div class="description">' . htmlspecialchars_decode( $field_desc ) . '</div>' : '';
|
|
|
|
/* filter choices array */
|
|
$field_choices = apply_filters( 'ot_type_select_choices', $field_choices, $field_id );
|
|
|
|
/* format setting inner wrapper */
|
|
echo '<div class="format-setting-inner">';
|
|
|
|
/* build select */
|
|
echo '<select name="' . esc_attr( $field_name ) . '" id="' . esc_attr( $field_id ) . '" class="option-tree-ui-select ' . esc_attr( $field_class ) . '">';
|
|
foreach ( (array) $field_choices as $choice ) {
|
|
if ( isset( $choice['value'] ) && isset( $choice['label'] ) ) {
|
|
echo '<option value="' . esc_attr( $choice['value'] ) . '"' . selected( $field_value, $choice['value'], false ) . '>' . esc_attr( $choice['label'] ) . '</option>';
|
|
}
|
|
}
|
|
|
|
echo '</select>';
|
|
|
|
echo '</div>';
|
|
|
|
echo '</div>';
|
|
|
|
}
|
|
|
|
}
|
|
|
|
/**
|
|
* Sidebar Select option type.
|
|
*
|
|
* This option type makes it possible for users to select a WordPress registered sidebar
|
|
* to use on a specific area. By using the two provided filters, 'ot_recognized_sidebars',
|
|
* and 'ot_recognized_sidebars_{$field_id}' we can be selective about which sidebars are
|
|
* available on a specific content area.
|
|
*
|
|
* For example, if we create a WordPress theme that provides the ability to change the
|
|
* Blog Sidebar and we don't want to have the footer sidebars available on this area,
|
|
* we can unset those sidebars either manually or by using a regular expression if we
|
|
* have a common name like footer-sidebar-$i.
|
|
*
|
|
* @param array An array of arguments.
|
|
* @return string
|
|
*
|
|
* @access public
|
|
* @since 2.1
|
|
*/
|
|
if ( ! function_exists( 'ot_type_sidebar_select' ) ) {
|
|
|
|
function ot_type_sidebar_select( $args = array() ) {
|
|
|
|
/* turns arguments array into variables */
|
|
extract( $args );
|
|
|
|
/* verify a description */
|
|
$has_desc = $field_desc ? true : false;
|
|
|
|
/* format setting outer wrapper */
|
|
echo '<div class="format-setting type-sidebar-select ' . ( $has_desc ? 'has-desc' : 'no-desc' ) . '">';
|
|
|
|
/* description */
|
|
echo $has_desc ? '<div class="description">' . htmlspecialchars_decode( $field_desc ) . '</div>' : '';
|
|
|
|
/* format setting inner wrapper */
|
|
echo '<div class="format-setting-inner">';
|
|
|
|
/* build page select */
|
|
echo '<select name="' . esc_attr( $field_name ) . '" id="' . esc_attr( $field_id ) . '" class="option-tree-ui-select ' . $field_class . '">';
|
|
|
|
/* get the registered sidebars */
|
|
global $wp_registered_sidebars;
|
|
|
|
$sidebars = array();
|
|
foreach( $wp_registered_sidebars as $id=>$sidebar ) {
|
|
$sidebars[ $id ] = $sidebar[ 'name' ];
|
|
}
|
|
|
|
/* filters to restrict which sidebars are allowed to be selected, for example we can restrict footer sidebars to be selectable on a blog page */
|
|
$sidebars = apply_filters( 'ot_recognized_sidebars', $sidebars );
|
|
$sidebars = apply_filters( 'ot_recognized_sidebars_' . $field_id, $sidebars );
|
|
|
|
/* has sidebars */
|
|
if ( count( $sidebars ) ) {
|
|
echo '<option value="">-- ' . __( 'Choose Sidebar', 'hueman' ) . ' --</option>';
|
|
foreach ( $sidebars as $id => $sidebar ) {
|
|
echo '<option value="' . esc_attr( $id ) . '"' . selected( $field_value, $id, false ) . '>' . esc_attr( $sidebar ) . '</option>';
|
|
}
|
|
} else {
|
|
echo '<option value="">' . __( 'No Sidebars', 'hueman' ) . '</option>';
|
|
}
|
|
|
|
echo '</select>';
|
|
|
|
echo '</div>';
|
|
|
|
echo '</div>';
|
|
|
|
}
|
|
|
|
}
|
|
|
|
/**
|
|
* Text option type.
|
|
*
|
|
* See @ot_display_by_type to see the full list of available arguments.
|
|
*
|
|
* @param array An array of arguments.
|
|
* @return string
|
|
*
|
|
* @access public
|
|
* @since 2.0
|
|
*/
|
|
if ( ! function_exists( 'ot_type_text' ) ) {
|
|
|
|
function ot_type_text( $args = array() ) {
|
|
|
|
/* turns arguments array into variables */
|
|
extract( $args );
|
|
|
|
/* verify a description */
|
|
$has_desc = $field_desc ? true : false;
|
|
|
|
/* format setting outer wrapper */
|
|
echo '<div class="format-setting type-text ' . ( $has_desc ? 'has-desc' : 'no-desc' ) . '">';
|
|
|
|
/* description */
|
|
echo $has_desc ? '<div class="description">' . htmlspecialchars_decode( $field_desc ) . '</div>' : '';
|
|
|
|
/* format setting inner wrapper */
|
|
echo '<div class="format-setting-inner">';
|
|
|
|
/* build text input */
|
|
echo '<input type="text" name="' . esc_attr( $field_name ) . '" id="' . esc_attr( $field_id ) . '" value="' . esc_attr( $field_value ) . '" class="widefat option-tree-ui-input ' . esc_attr( $field_class ) . '" />';
|
|
|
|
echo '</div>';
|
|
|
|
echo '</div>';
|
|
|
|
}
|
|
|
|
}
|
|
|
|
/**
|
|
* Textarea option type.
|
|
*
|
|
* See @ot_display_by_type to see the full list of available arguments.
|
|
*
|
|
* @param array An array of arguments.
|
|
* @return string
|
|
*
|
|
* @access public
|
|
* @since 2.0
|
|
*/
|
|
if ( ! function_exists( 'ot_type_textarea' ) ) {
|
|
|
|
function ot_type_textarea( $args = array() ) {
|
|
|
|
/* turns arguments array into variables */
|
|
extract( $args );
|
|
|
|
/* verify a description */
|
|
$has_desc = $field_desc ? true : false;
|
|
|
|
/* format setting outer wrapper */
|
|
echo '<div class="format-setting type-textarea ' . ( $has_desc ? 'has-desc' : 'no-desc' ) . ' fill-area">';
|
|
|
|
/* description */
|
|
echo $has_desc ? '<div class="description">' . htmlspecialchars_decode( $field_desc ) . '</div>' : '';
|
|
|
|
/* format setting inner wrapper */
|
|
echo '<div class="format-setting-inner">';
|
|
|
|
/* build textarea */
|
|
wp_editor(
|
|
$field_value,
|
|
esc_attr( $field_id ),
|
|
array(
|
|
'editor_class' => esc_attr( $field_class ),
|
|
'wpautop' => apply_filters( 'ot_wpautop', false, $field_id ),
|
|
'media_buttons' => apply_filters( 'ot_media_buttons', true, $field_id ),
|
|
'textarea_name' => esc_attr( $field_name ),
|
|
'textarea_rows' => esc_attr( $field_rows ),
|
|
'tinymce' => apply_filters( 'ot_tinymce', true, $field_id ),
|
|
'quicktags' => apply_filters( 'ot_quicktags', array( 'buttons' => 'strong,em,link,block,del,ins,img,ul,ol,li,code,spell,close' ), $field_id )
|
|
)
|
|
);
|
|
|
|
echo '</div>';
|
|
|
|
echo '</div>';
|
|
|
|
}
|
|
|
|
}
|
|
|
|
/**
|
|
* Textarea Simple option type.
|
|
*
|
|
* See @ot_display_by_type to see the full list of available arguments.
|
|
*
|
|
* @param array An array of arguments.
|
|
* @return string
|
|
*
|
|
* @access public
|
|
* @since 2.0
|
|
*/
|
|
if ( ! function_exists( 'ot_type_textarea_simple' ) ) {
|
|
|
|
function ot_type_textarea_simple( $args = array() ) {
|
|
|
|
/* turns arguments array into variables */
|
|
extract( $args );
|
|
|
|
/* verify a description */
|
|
$has_desc = $field_desc ? true : false;
|
|
|
|
/* format setting outer wrapper */
|
|
echo '<div class="format-setting type-textarea simple ' . ( $has_desc ? 'has-desc' : 'no-desc' ) . '">';
|
|
|
|
/* description */
|
|
echo $has_desc ? '<div class="description">' . htmlspecialchars_decode( $field_desc ) . '</div>' : '';
|
|
|
|
/* format setting inner wrapper */
|
|
echo '<div class="format-setting-inner">';
|
|
|
|
/* filter to allow wpautop */
|
|
$wpautop = apply_filters( 'ot_wpautop', false, $field_id );
|
|
|
|
/* wpautop $field_value */
|
|
if ( $wpautop == true )
|
|
$field_value = wpautop( $field_value );
|
|
|
|
/* build textarea simple */
|
|
echo '<textarea class="textarea ' . esc_attr( $field_class ) . '" rows="' . esc_attr( $field_rows ) . '" cols="40" name="' . esc_attr( $field_name ) .'" id="' . esc_attr( $field_id ) . '">' . esc_textarea( $field_value ) . '</textarea>';
|
|
|
|
echo '</div>';
|
|
|
|
echo '</div>';
|
|
|
|
}
|
|
|
|
}
|
|
|
|
/**
|
|
* Upload option type.
|
|
*
|
|
* See @ot_display_by_type to see the full list of available arguments.
|
|
*
|
|
* @param array An array of arguments.
|
|
* @return string
|
|
*
|
|
* @access public
|
|
* @since 2.0
|
|
*/
|
|
if ( ! function_exists( 'ot_type_upload' ) ) {
|
|
|
|
function ot_type_upload( $args = array() ) {
|
|
|
|
/* turns arguments array into variables */
|
|
extract( $args );
|
|
|
|
/* verify a description */
|
|
$has_desc = $field_desc ? true : false;
|
|
|
|
/* If an attachment ID is stored here fetch its URL and replace the value */
|
|
if ( $field_value && wp_attachment_is_image( $field_value ) ) {
|
|
|
|
$attachment_data = wp_get_attachment_image_src( $field_value, 'original' );
|
|
|
|
/* check for attachment data */
|
|
if ( $attachment_data ) {
|
|
|
|
$field_src = $attachment_data[0];
|
|
|
|
}
|
|
|
|
}
|
|
|
|
/* format setting outer wrapper */
|
|
echo '<div class="format-setting type-upload ' . ( $has_desc ? 'has-desc' : 'no-desc' ) . '">';
|
|
|
|
/* description */
|
|
echo $has_desc ? '<div class="description">' . htmlspecialchars_decode( $field_desc ) . '</div>' : '';
|
|
|
|
/* format setting inner wrapper */
|
|
echo '<div class="format-setting-inner">';
|
|
|
|
/* build upload */
|
|
echo '<div class="option-tree-ui-upload-parent">';
|
|
|
|
/* input */
|
|
echo '<input type="text" name="' . esc_attr( $field_name ) . '" id="' . esc_attr( $field_id ) . '" value="' . esc_attr( $field_value ) . '" class="widefat option-tree-ui-upload-input ' . esc_attr( $field_class ) . '" />';
|
|
|
|
/* add media button */
|
|
echo '<a href="javascript:void(0);" class="ot_upload_media option-tree-ui-button button button-primary light" rel="' . $post_id . '" title="' . __( 'Add Media', 'hueman' ) . '"><span class="icon ot-icon-plus-circle"></span>' . __( 'Add Media', 'hueman' ) . '</a>';
|
|
|
|
echo '</div>';
|
|
|
|
/* media */
|
|
if ( $field_value ) {
|
|
|
|
echo '<div class="option-tree-ui-media-wrap" id="' . esc_attr( $field_id ) . '_media">';
|
|
|
|
/* replace image src */
|
|
if ( isset( $field_src ) )
|
|
$field_value = $field_src;
|
|
|
|
if ( preg_match( '/\.(?:jpe?g|png|gif|ico)$/i', $field_value ) )
|
|
echo '<div class="option-tree-ui-image-wrap"><img src="' . esc_url( $field_value ) . '" alt="" /></div>';
|
|
|
|
echo '<a href="javascript:(void);" class="option-tree-ui-remove-media option-tree-ui-button button button-secondary light" title="' . __( 'Remove Media', 'hueman' ) . '"><span class="icon ot-icon-minus-circle"></span>' . __( 'Remove Media', 'hueman' ) . '</a>';
|
|
|
|
echo '</div>';
|
|
|
|
}
|
|
|
|
echo '</div>';
|
|
|
|
echo '</div>';
|
|
|
|
}
|
|
|
|
}
|
|
|
|
/* End of file ot-functions-option-types.php */
|
|
/* Location: ./includes/ot-functions-option-types.php */
|