1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
|
<?php
/**
* Custom logo uploader control for the Customizer.
*
* @package Jetpack
*/
class Site_Logo_Image_Control extends WP_Customize_Control {
/**
* Constructor for our custom control.
*
* @param object $wp_customize
* @param string $control_id
* @param array $args
* @uses Site_Logo_Image_Control::l10n()
*/
public function __construct( $wp_customize, $control_id, $args = array() ) {
// declare these first so they can be overridden
$this->l10n = array(
'upload' => __( 'Add logo', 'jetpack' ),
'set' => __( 'Set as logo', 'jetpack' ),
'choose' => __( 'Choose logo', 'jetpack' ),
'change' => __( 'Change logo', 'jetpack' ),
'remove' => __( 'Remove logo', 'jetpack' ),
'placeholder' => __( 'No logo set', 'jetpack' ),
);
parent::__construct( $wp_customize, $control_id, $args );
}
/**
* This will be critical for our JS constructor.
*/
public $type = 'site_logo';
/**
* Allows overriding of global labels by a specific control.
*/
public $l10n = array();
/**
* The type of files that should be allowed by the media modal.
*/
public $mime_type = 'image';
/**
* Enqueue our media manager resources, scripts, and styles.
*
* @uses wp_enqueue_media()
* @uses wp_enqueue_style()
* @uses wp_enqueue_script()
* @uses plugins_url()
*/
public function enqueue() {
// Enqueues all needed media resources.
wp_enqueue_media();
// Enqueue our control script and styles.
wp_enqueue_style( 'site-logo-control', plugins_url( '../css/site-logo-control.css', __FILE__ ) );
wp_enqueue_script( 'site-logo-control', plugins_url( '../js/site-logo-control.js', __FILE__ ), array( 'media-views', 'customize-controls', 'underscore' ), '', true );
}
/**
* Check if we have an active site logo.
*
* @uses get_option()
* @return boolean
*/
public function has_site_logo() {
$logo = get_option( 'site_logo' );
if ( empty( $logo['url'] ) ) {
return false;
} else {
return true;
}
}
/**
* Display our custom control in the Customizer.
*
* @uses Site_Logo_Image_Control::l10n()
* @uses Site_Logo_Image_Control::mime_type()
* @uses Site_Logo_Image_Control::label()
* @uses Site_Logo_Image_Control::description()
* @uses esc_attr()
* @uses esc_html()
*/
public function render_content() {
// We do this to allow the upload control to specify certain labels
$l10n = json_encode( $this->l10n );
// Control title
printf(
'<span class="customize-control-title" data-l10n="%s" data-mime="%s">%s</span>',
esc_attr( $l10n ),
esc_attr( $this->mime_type ),
esc_html( $this->label )
);
// Control description
if ( ! empty( $this->description ) ) : ?>
<span class="description customize-control-description"><?php echo $this->description; ?></span>
<?php endif; ?>
<div class="current"></div>
<div class="actions"></div>
<?php
}
}
|