wp/wp-includes/customize/class-wp-customize-nav-menu-location-control.php
changeset 7 cf61fcea0001
child 9 177826044cd9
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/wp/wp-includes/customize/class-wp-customize-nav-menu-location-control.php	Mon Oct 14 17:39:30 2019 +0200
@@ -0,0 +1,81 @@
+<?php
+/**
+ * Customize API: WP_Customize_Nav_Menu_Location_Control class
+ *
+ * @package WordPress
+ * @subpackage Customize
+ * @since 4.4.0
+ */
+
+/**
+ * Customize Menu Location Control Class.
+ *
+ * This custom control is only needed for JS.
+ *
+ * @since 4.3.0
+ *
+ * @see WP_Customize_Control
+ */
+class WP_Customize_Nav_Menu_Location_Control extends WP_Customize_Control {
+
+	/**
+	 * Control type.
+	 *
+	 * @since 4.3.0
+	 * @var string
+	 */
+	public $type = 'nav_menu_location';
+
+	/**
+	 * Location ID.
+	 *
+	 * @since 4.3.0
+	 * @var string
+	 */
+	public $location_id = '';
+
+	/**
+	 * Refresh the parameters passed to JavaScript via JSON.
+	 *
+	 * @since 4.3.0
+	 *
+	 * @see WP_Customize_Control::to_json()
+	 */
+	public function to_json() {
+		parent::to_json();
+		$this->json['locationId'] = $this->location_id;
+	}
+
+	/**
+	 * Render content just like a normal select control.
+	 *
+	 * @since 4.3.0
+	 * @since 4.9.0 Added a button to create menus.
+	 */
+	public function render_content() {
+		if ( empty( $this->choices ) ) {
+			return;
+		}
+		?>
+		<label>
+			<?php if ( ! empty( $this->label ) ) : ?>
+			<span class="customize-control-title"><?php echo esc_html( $this->label ); ?></span>
+			<?php endif; ?>
+
+			<?php if ( ! empty( $this->description ) ) : ?>
+			<span class="description customize-control-description"><?php echo $this->description; ?></span>
+			<?php endif; ?>
+
+			<select <?php $this->link(); ?>>
+				<?php
+				foreach ( $this->choices as $value => $label ) :
+					echo '<option value="' . esc_attr( $value ) . '"' . selected( $this->value(), $value, false ) . '>' . $label . '</option>';
+				endforeach;
+				?>
+			</select>
+		</label>
+		<button type="button" class="button-link create-menu<?php if ( $this->value() ) { echo ' hidden'; } ?>" data-location-id="<?php echo esc_attr( $this->location_id ); ?>" aria-label="<?php esc_attr_e( 'Create a menu for this location' ); ?>"><?php _e( '+ Create New Menu' ); ?></button>
+		<button type="button" class="button-link edit-menu<?php if ( ! $this->value() ) { echo ' hidden'; } ?>" aria-label="<?php esc_attr_e( 'Edit selected menu' ); ?>"><?php _e( 'Edit Menu' ); ?></button>
+		<?php
+	}
+}