diff -r 2f6f6f7551ca -r 32102edaa81b web/wp-includes/class-wp-customize-control.php
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/web/wp-includes/class-wp-customize-control.php Mon Nov 19 18:26:13 2012 +0100
@@ -0,0 +1,567 @@
+$key = $args[ $key ];
+ }
+
+ $this->manager = $manager;
+ $this->id = $id;
+
+
+ // Process settings.
+ if ( empty( $this->settings ) )
+ $this->settings = $id;
+
+ $settings = array();
+ if ( is_array( $this->settings ) ) {
+ foreach ( $this->settings as $key => $setting ) {
+ $settings[ $key ] = $this->manager->get_setting( $setting );
+ }
+ } else {
+ $this->setting = $this->manager->get_setting( $this->settings );
+ $settings['default'] = $this->setting;
+ }
+ $this->settings = $settings;
+ }
+
+ /**
+ * Enqueue control related scripts/styles.
+ *
+ * @since 3.4.0
+ */
+ public function enqueue() {}
+
+
+ /**
+ * Fetch a setting's value.
+ * Grabs the main setting by default.
+ *
+ * @since 3.4.0
+ */
+ public final function value( $setting_key = 'default' ) {
+ if ( isset( $this->settings[ $setting_key ] ) )
+ return $this->settings[ $setting_key ]->value();
+ }
+
+ /**
+ * Refresh the parameters passed to the JavaScript via JSON.
+ *
+ * @since 3.4.0
+ */
+ public function to_json() {
+ $this->json['settings'] = array();
+ foreach ( $this->settings as $key => $setting ) {
+ $this->json['settings'][ $key ] = $setting->id;
+ }
+
+ $this->json['type'] = $this->type;
+ }
+
+ /**
+ * Check if the theme supports the control and check user capabilities.
+ *
+ * @since 3.4.0
+ *
+ * @return bool False if theme doesn't support the control or user doesn't have the required permissions, otherwise true.
+ */
+ public final function check_capabilities() {
+ foreach ( $this->settings as $setting ) {
+ if ( ! $setting->check_capabilities() )
+ return false;
+ }
+
+ $section = $this->manager->get_section( $this->section );
+ if ( isset( $section ) && ! $section->check_capabilities() )
+ return false;
+
+ return true;
+ }
+
+ /**
+ * Check capabilities and render the control.
+ *
+ * @since 3.4.0
+ */
+ public final function maybe_render() {
+ if ( ! $this->check_capabilities() )
+ return;
+
+ do_action( 'customize_render_control', $this );
+ do_action( 'customize_render_control_' . $this->id, $this );
+
+ $this->render();
+ }
+
+ /**
+ * Render the control. Renders the control wrapper, then calls $this->render_content().
+ *
+ * @since 3.4.0
+ */
+ protected function render() {
+ $id = 'customize-control-' . str_replace( '[', '-', str_replace( ']', '', $this->id ) );
+ $class = 'customize-control customize-control-' . $this->type;
+
+ ?>
+ render_content(); ?>
+ settings[ $setting_key ] ) )
+ return '';
+
+ return 'data-customize-setting-link="' . esc_attr( $this->settings[ $setting_key ]->id ) . '"';
+ }
+
+ public function link( $setting_key = 'default' ) {
+ echo $this->get_link( $setting_key );
+ }
+
+ /**
+ * Render the control's content.
+ *
+ * Allows the content to be overriden without having to rewrite the wrapper.
+ *
+ * @since 3.4.0
+ */
+ protected function render_content() {
+ switch( $this->type ) {
+ case 'text':
+ ?>
+
+
+
+ choices ) )
+ return;
+
+ $name = '_customize-radio-' . $this->id;
+
+ ?>
+ label ); ?>
+ choices as $value => $label ) :
+ ?>
+
+ choices ) )
+ return;
+
+ ?>
+
+ '_customize-dropdown-pages-' . $this->id,
+ 'echo' => 0,
+ 'show_option_none' => __( '— Select —' ),
+ 'option_none_value' => '0',
+ 'selected' => $this->value(),
+ )
+ );
+
+ // Hackily add in the data link parameter.
+ $dropdown = str_replace( '