data = &$args;
if( $this->add_in_menu() ) {
add_action( 'admin_menu', array( $this, 'add_menu_in_admin_menu' ), 12 );
}
add_action( 'admin_init', array( $this, 'pick_settings_display_fields' ), 12 );
add_filter( 'whitelist_options', array( $this, 'pick_settings_whitelist_options' ), 99, 1 );
add_action( 'admin_enqueue_scripts', array( $this, 'pick_enqueue_color_picker' ) );
}
public function add_menu_in_admin_menu() {
if( "main" == $this->get_menu_type() ) {
add_menu_page( $this->get_menu_name(), $this->get_menu_title(), $this->get_capability(), $this->get_menu_slug(), array( $this, 'pick_settings_display_function' ), $this->get_menu_icon(), $this->get_menu_position() );
}
if( "submenu" == $this->get_menu_type() ) {
add_submenu_page( $this->get_parent_slug(), $this->get_page_title(), $this->get_menu_title(), $this->get_capability(), $this->get_menu_slug(), array( $this, 'pick_settings_display_function' ) );
}
}
public function pick_enqueue_color_picker(){
wp_enqueue_style( 'wp-color-picker' );
wp_enqueue_script( 'wp-color-picker' );
wp_enqueue_script( 'jquery-ui-datepicker' );
}
public function pick_settings_display_fields() {
foreach( $this->get_settings_fields() as $key => $setting ):
add_settings_section(
$key,
isset( $setting['title'] ) ? $setting['title'] : "",
array( $this, 'pick_settings_section_callback' ),
$this->get_current_page()
);
foreach( $setting['options'] as $option ) :
add_settings_field( $option['id'], $option['title'], array($this,'pick_settings_field_generator'), $this->get_current_page(), $key, $option );
endforeach;
endforeach;
}
public function pick_settings_field_generator( $option ) {
$id = isset( $option['id'] ) ? $option['id'] : "";
$details = isset( $option['details'] ) ? $option['details'] : "";
if( empty( $id ) ) return;
try{
if( isset($option['type']) && $option['type'] === 'select' ) $this->pick_settings_generate_select( $option );
elseif( isset($option['type']) && $option['type'] === 'checkbox') $this->pick_settings_generate_checkbox( $option );
elseif( isset($option['type']) && $option['type'] === 'radio') $this->pick_settings_generate_radio( $option );
elseif( isset($option['type']) && $option['type'] === 'textarea') $this->pick_settings_generate_textarea( $option );
elseif( isset($option['type']) && $option['type'] === 'number' ) $this->pick_settings_generate_number( $option );
elseif( isset($option['type']) && $option['type'] === 'text' ) $this->pick_settings_generate_text( $option );
elseif( isset($option['type']) && $option['type'] === 'colorpicker')$this->pick_settings_generate_colorpicker( $option );
elseif( isset($option['type']) && $option['type'] === 'datepicker') $this->pick_settings_generate_datepicker( $option );
elseif( isset($option['type']) && $option['type'] === 'select2') $this->pick_settings_generate_select2( $option );
elseif( isset($option['type']) && $option['type'] === 'range') $this->pick_settings_generate_range( $option );
elseif( isset($option['type']) && $option['type'] === 'media') $this->pick_settings_generate_media( $option );
do_action( "pick_settings_$id", $option );
if( !empty( $details ) ) echo "
$details
";
}
catch(Pick_error $e) {
echo $e->get_error_message();
}
}
public function pick_settings_generate_media( $option ){
$id = isset( $option['id'] ) ? $option['id'] : "";
$value = get_option( $id );
$media_url = wp_get_attachment_url( $value );
$media_type = get_post_mime_type( $value );
$media_title= get_the_title( $value );
wp_enqueue_media();
echo "";
echo "";
echo "Upload
";
echo "";
}
public function pick_settings_generate_range( $option ){
$id = isset( $option['id'] ) ? $option['id'] : "";
$min = isset( $option['min'] ) ? $option['min'] : 1;
$max = isset( $option['max'] ) ? $option['max'] : 100;
$value = get_option( $id );
$value = empty( $value ) ? 0 : $value;
echo "";
echo "$value";
echo "
";
}
public function pick_settings_generate_select2( $option ){
$id = isset( $option['id'] ) ? $option['id'] : "";
$args = isset( $option['args'] ) ? $option['args'] : array();
$args = is_array( $args ) ? $args : $this->generate_args_from_string( $args, $option );
$value = get_option( $id );
$multiple = isset( $option['multiple'] ) ? $option['multiple'] : '';
wp_enqueue_style( 'select2', USER_PROFILE_PLUGIN_URL.'assets/admin/css/select2.min.css' );
wp_enqueue_script('select2', USER_PROFILE_PLUGIN_URL.'assets/admin/js/select2.min.js', array('jquery') );
echo $multiple ? "