summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
Diffstat (limited to 'plugins/jetpack/modules/theme-tools/site-logo/inc/class-site-logo-control.php')
-rw-r--r--plugins/jetpack/modules/theme-tools/site-logo/inc/class-site-logo-control.php109
1 files changed, 109 insertions, 0 deletions
diff --git a/plugins/jetpack/modules/theme-tools/site-logo/inc/class-site-logo-control.php b/plugins/jetpack/modules/theme-tools/site-logo/inc/class-site-logo-control.php
new file mode 100644
index 00000000..5e23507d
--- /dev/null
+++ b/plugins/jetpack/modules/theme-tools/site-logo/inc/class-site-logo-control.php
@@ -0,0 +1,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
+ }
+}