????
| Current Path : /home2/morganrand/www/wp-content-bkp/themes/wanderfuls/framework/addons/ |
| Current File : /home2/morganrand/www/wp-content-bkp/themes/wanderfuls/framework/addons/favicons.php |
<?php
/**
* Adds favicons and mobile icon meta to the wp_head
*
* @package Wanderfuls WordPress theme
* @subpackage Framework
*/
// Exit if accessed directly
if ( ! defined( 'ABSPATH' ) ) {
exit;
}
// Start Class
if ( ! class_exists( 'TB_Favicons' ) ) {
class TB_Favicons {
/**
* Start things up
*/
public function __construct() {
add_action( 'admin_menu', array( $this, 'add_page' ) );
add_action( 'admin_init', array( $this,'register_page_options' ) );
add_action( 'admin_enqueue_scripts',array( $this,'scripts' ) );
add_action( 'wp_head', array( $this, 'output_favicons' ) );
}
/**
* Add sub menu page
*
* @since 1.6.0
*/
public function add_page() {
add_submenu_page(
TB_THEME_PANEL_SLUG,
__( 'Favicons', 'tb' ),
__( 'Favicons', 'tb' ),
'administrator',
TB_THEME_PANEL_SLUG .'-favicons',
array( $this, 'create_admin_page' )
);
}
/**
* Load scripts
*
* @since 1.6.0
*/
public static function scripts( $hook ) {
// Only load scripts when needed
if( TB_ADMIN_PANEL_HOOK_PREFIX . '-favicons' != $hook ) {
return;
}
// Media Uploader
wp_enqueue_media();
wp_enqueue_script(
'tb-media-uploader-field',
TB_FRAMEWORK_DIR_URI .'addons/assets/admin-fields/media-uploader.js',
array( 'media-upload' ),
false,
true
);
// CSS
wp_enqueue_style( 'tb-admin', TB_FRAMEWORK_DIR_URI .'addons/assets/admin-fields/admin.css' );
}
/**
* Function that will register admin page options.
*
* @since 1.6.0
*/
public function register_page_options() {
// Register Setting
register_setting( 'tb_favicons', 'tb_favicons', array( $this, 'sanitize' ) );
// Add main section to our options page
add_settings_section( 'tb_favicons_main', false, array( $this, 'section_main_callback' ), 'tb-favicons' );
// Favicon
add_settings_field(
'tb_favicon',
__( 'Favicon', 'tb' ),
array( $this, 'favicon_callback' ),
'tb-favicons',
'tb_favicons_main'
);
// iPhone
add_settings_field(
'tb_iphone_icon',
__( 'Apple iPhone Icon ', 'tb' ),
array( $this, 'iphone_icon_callback' ),
'tb-favicons',
'tb_favicons_main'
);
// Ipad
add_settings_field(
'tb_ipad_icon',
__( 'Apple iPad Icon ', 'tb' ),
array( $this, 'ipad_icon_callback' ),
'tb-favicons',
'tb_favicons_main'
);
// iPhone Retina
add_settings_field(
'tb_iphone_icon_retina',
__( 'Apple iPhone Retina Icon ', 'tb' ),
array( $this, 'iphone_icon_retina_callback' ),
'tb-favicons',
'tb_favicons_main'
);
// iPad Retina
add_settings_field(
'tb_ipad_icon_retina',
__( 'Apple iPad Retina Icon ', 'tb' ),
array( $this, 'ipad_icon_retina_callback' ),
'tb-favicons',
'tb_favicons_main'
);
}
/**
* Sanitization callback
*
* @since 1.6.0
*/
public static function sanitize( $options ) {
// Set all options to theme_mods
if ( is_array( $options ) && ! empty( $options ) ) {
foreach ( $options as $key => $value ) {
set_theme_mod( $key, $value );
}
}
// Set options to nothing since we are storing in the theme mods
$options = '';
return $options;
}
/**
* Main Settings section callback
*
* @since 1.6.0
*/
public static function section_main_callback() {
// Leave blank
}
/**
* Returns correct value for preview
*
* @since 1.6.0
*/
private static function sanitize_val( $val, $instance = 'mod' ) {
if ( 'image' == $instance && is_numeric( $val ) ) {
$val = wp_get_attachment_image_src( $val, 'full' );
$val = $val[0];
} elseif( is_numeric( $val ) ) {
$val = absint( $val );
} else {
$val = esc_url( $val );
}
return $val;
}
/**
* Fields callback functions
*
* @since 1.6.0
*/
// Favicon
public function favicon_callback() {
$val = tb_get_mod( 'favicon' );
$val = $this->sanitize_val( $val );
$preview = $this->sanitize_val( $val, 'image' );
$output = '<input type="text" name="tb_favicons[favicon]" value="'. $val .'" class="tb-image-input">';
$output .= ' <input class="tb-media-upload-button button-secondary" name="login_page_design_bg_img_button" type="button" value="'. __( 'Upload', 'tb' ) .'" />';
$output .= '<p class="description">32x32</p>';
$output .= '<div class="tb-media-live-preview">';
if ( $preview ) {
$output .= '<img src="'. $preview .'" alt="'. __( 'Preview Image', 'tb' ) .'" style="width:32px;height:32px;" />';
}
$output .= '</div>';
echo $output;
}
// iPhone
public function iphone_icon_callback() {
$val = tb_get_mod( 'iphone_icon' );
$val = $this->sanitize_val( $val );
$preview = $this->sanitize_val( $val, 'image' );
$output = '<input type="text" name="tb_favicons[iphone_icon]" value="'. $val .'">';
$output .= ' <input class="tb-media-upload-button button-secondary" name="login_page_design_bg_img_button" type="button" value="'. __( 'Upload', 'tb' ) .'" />';
$output .= '<p class="description">57x57</p>';
$output .= '<div class="tb-media-live-preview">';
if ( $preview ) {
$output .= '<img src="'. $preview .'" alt="'. __( 'Preview Image', 'tb' ) .'" style="width:57px;height:57px;" />';
}
$output .= '</div>';
echo $output;
}
// iPad
public function ipad_icon_callback() {
$val = tb_get_mod( 'ipad_icon' );
$val = $this->sanitize_val( $val );
$preview = $this->sanitize_val( $val, 'image' );
$output = '<input type="text" name="tb_favicons[ipad_icon]" value="'. $val .'">';
$output .= ' <input class="tb-media-upload-button button-secondary" name="login_page_design_bg_img_button" type="button" value="'. __( 'Upload', 'tb' ) .'" />';
$output .= '<p class="description">76x76</p>';
$output .= '<div class="tb-media-live-preview">';
if ( $preview ) {
$output .= '<img src="'. $preview .'" alt="'. __( 'Preview Image', 'tb' ) .'" style="width:76px;height:76px;" />';
}
$output .= '</div>';
echo $output;
}
// iPhone Retina
public function iphone_icon_retina_callback() {
$val = tb_get_mod( 'iphone_icon_retina' );
$val = $this->sanitize_val( $val );
$preview = $this->sanitize_val( $val, 'image' );
$output = '<input type="text" name="tb_favicons[iphone_icon_retina]" value="'. $val .'">';
$output .= ' <input class="tb-media-upload-button button-secondary" name="login_page_design_bg_img_button" type="button" value="'. __( 'Upload', 'tb' ) .'" />';
$output .= '<p class="description">120x120</p>';
$output .= '<div class="tb-media-live-preview">';
if ( $preview ) {
$output .= '<img src="'. $preview .'" alt="'. __( 'Preview Image', 'tb' ) .'" style="width:120px;height:120px;" />';
}
$output .= '</div>';
echo $output;
}
// iPad Retina
public function ipad_icon_retina_callback() {
$val = tb_get_mod( 'ipad_icon_retina' );
$val = $this->sanitize_val( $val );
$preview = $this->sanitize_val( $val, 'image' );
$output = '<input type="text" name="tb_favicons[ipad_icon_retina]" value="'. $val .'">';
$output .= ' <input class="tb-media-upload-button button-secondary" name="login_page_design_bg_img_button" type="button" value="'. __( 'Upload', 'tb' ) .'" />';
$output .= '<p class="description">152x152</p>';
$output .= '<div class="tb-media-live-preview">';
if ( $preview ) {
$output .= '<img src="'. $preview .'" alt="'. __( 'Preview Image', 'tb' ) .'" style="width:152px;height:152px;" />';
}
$output .= '</div>';
echo $output;
}
/**
* Settings page output
*
* @since 1.6.0
*/
public static function create_admin_page() { ?>
<div class="wrap">
<h2 style="padding-right:0;">
<?php _e( 'Favicons', 'tb' ); ?>
</h2>
<form method="post" action="options.php">
<?php settings_fields( 'tb_favicons' ); ?>
<?php do_settings_sections( 'tb-favicons' ); ?>
<?php submit_button(); ?>
</form>
</div><!-- .wrap -->
<?php }
/**
* Settings page output
*
* @since 1.6.0
*/
public function output_favicons() {
$output = '';
// Favicon - Standard
if ( $icon = tb_get_mod( 'favicon' ) ) {
$output .= '<link rel="shortcut icon" href="'. esc_url( $this->sanitize_val( $icon, 'image' ) ) .'">';
}
// Apple iPhone Icon - 57px
if ( $icon = tb_get_mod( 'iphone_icon' ) ) {
$output .= '<link rel="apple-touch-icon-precomposed" href="'. esc_url( $this->sanitize_val( $icon, 'image' ) ) .'">';
}
// Apple iPad Icon - 76px
if ( $icon = tb_get_mod( 'ipad_icon' ) ) {
$output .= '<link rel="apple-touch-icon-precomposed" sizes="76x76" href="'. esc_url( $this->sanitize_val( $icon, 'image' ) ) .'">';
}
// Apple iPhone Retina Icon - 120px
if ( $icon = tb_get_mod( 'iphone_icon_retina' ) ) {
$output .= '<link rel="apple-touch-icon-precomposed" sizes="120x120" href="'. esc_url( $this->sanitize_val( $icon, 'image' ) ) .'">';
}
// Apple iPad Retina Icon - 114px
if ( $icon = tb_get_mod( 'ipad_icon_retina' ) ) {
$output .= '<link rel="apple-touch-icon-precomposed" sizes="114x114" href="'. esc_url( $this->sanitize_val( $icon, 'image' ) ) .'">';
}
// Output favicons into the WP_Head
echo $output;
}
}
}
$tb_favicons = new TB_Favicons();