name = esc_html__( 'Photo', 'charitable' ); $this->type = 'photo'; $this->icon = 'fa-image'; $this->order = 30; $this->align_default = 'center'; // Edit/Duplication information. $this->edit_label = esc_html__( 'Edit Photo', 'charitable' ); $this->edit_type = 'photo'; $this->edit_section = 'standard'; $this->can_be_edited = true; $this->can_be_deleted = true; $this->can_be_duplicated = true; // Misc. $this->tooltip = esc_html__( 'Select a photo from your media gallery.', 'charitable' ); // Define additional field properties. add_action( 'charitable_builder_frontend_js', array( $this, 'frontend_js' ) ); add_action( 'charitable_builder_backend_scripts', array( $this, 'builder_js' ) ); } /** * Photo options panel inside the builder. * * @since 1.8.0 * * @param array $field Photo settings. */ public function field_options( $field ) { /* * Basic field options. */ // Options open markup. } /** * Render the field. * * @since 1.8.0 * * @param array $field_data Any field data. * @param array $campaign_data Amount data and settings. * @param integer $field_id The field ID. * @param string $mode Where the field is being displayed ("preview" or "template"). * @param array $template_data Tempalate data. */ public function render( $field_data = false, $campaign_data = false, $field_id = false, $mode = 'template', $template_data = false ) { if ( 'preview' === $mode ) { // Define data. $width_percentage = isset( $field_data['width_percentage'] ) ? absint( $field_data['width_percentage'] ) : 100; if ( $width_percentage >= 100 ) { $width_percentage = 95; } // Do we have an uploaded photo we can use as a better placeholder? $image_url = ! empty( $field_data['file'] ) ? esc_url( $field_data['file'] ) : false; $image_url = false === $image_url && ! empty( $field_data['default'] ) ? esc_url( $field_data['default'] ) : $image_url; if ( $image_url ) { return '
'; } else { return '
'; } } else { $image_url = ! empty( $field_data['file'] ) ? esc_url( $field_data['file'] ) : ''; $image_url = '' === $image_url && filter_var( $field_data['default'], FILTER_VALIDATE_URL ) ? esc_url( $field_data['default'] ) : $image_url; $image_url = '' === $image_url && ! empty( $field_data['default'] && ! empty( $campaign_data['template_id'] ) ) ? esc_url( charitable()->get_path( 'directory', false ) . 'assets/images/campaign-builder/templates/' . esc_attr( $campaign_data['template_id'] ) . '/' . $field_data['default'] ) : $image_url; $image_url = '' === $image_url ? apply_filters( 'charitable_campaign_builder_photo_image_placeholder_url', charitable()->get_path( 'directory', false ) . 'assets/images/campaign-builder/photo-default-image.png' ) : $image_url; $alt_text = ! empty( $field_data['alt_text'] ) ? trim( wp_strip_all_tags( $field_data['alt_text'] ) ): ''; $css_class = ! empty( $field_data['css_class'] ) ? ' class="' . esc_attr( $field_data['css_class'] ) . '" ' : ''; $photo_attr = apply_filters( 'charitable_campaign_builder_photo_image_attributes', false ); ob_start(); ?>
src="" alt="" />
field_title( $this->name ); $html .= $this->field_wrapper( $this->render( $field_data, $campaign_data, $field_id, 'preview' ), $field_data ); echo wp_kses_post( $html ); } /** * Photo display on the form front-end. * * @since 1.8.0 * * @param string $field_type Field Type. * @param array $field_data Deprecated. * @param array $campaign_data Form data and settings. */ public function field_display( $field_type = '', $field_data = false, $campaign_data = false ) { $html = $this->field_display_wrapper( $this->render( $field_data, $campaign_data ), $field_data ); echo wp_kses_post( apply_filters( 'charitable_campaign_builder_' . $this->type . '_field_display', $html, $campaign_data ) ); } /** * Photo display on the form front-end. * * @since 1.8.0 * * @param array $field_id Photo settings. * @param array $campaign_data Form data and settings. */ public function settings_display( $field_id = false, $campaign_data = false ) { $charitable_builder_form_fields = new Charitable_Builder_Form_Fields(); $settings = isset( $campaign_data['fields'][ $field_id ] ) ? $campaign_data['fields'][ $field_id ] : false; // special check - if "default" is just a filename, readjust the default to a full url. if ( ! empty( $settings['default'] ) && ! empty( $campaign_data['template_id'] ) ) { $default_basename = basename( $settings['default'] ); if ( $default_basename === $settings['default'] ) { $settings['default'] = charitable()->get_path( 'assets', false ) . 'images/campaign-builder/templates/' . $campaign_data['template_id'] . '/' . $default_basename; } } ob_start(); ?>

name ); ?> (ID: )

generate_uploader( // phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped isset( $settings['file'] ) ? $settings['file'] : false, esc_html__( 'Photo URL', 'charitable' ), array( 'id' => 'field_' . esc_attr( $this->type ) . '_file' . '_' . intval( $field_id ), // phpcs:ignore 'name' => array( '_fields', intval( $field_id ), 'file' ), 'field_id' => esc_attr( $field_id ), 'button_label' => esc_html__( 'Upload', 'charitable' ), 'placeholder' => 'https://', 'description' => esc_html__( 'Upload a new image or add an existing image.', 'charitable' ), 'tooltip' => esc_attr( $this->tooltip ), ) ); echo $charitable_builder_form_fields->generate_text( // phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped isset( $settings['alt_text'] ) ? $settings['alt_text'] : false, esc_html__( 'ALT Text', 'charitable' ), array( 'id' => 'field_' . esc_attr( $this->type ) . '_alt_text' . '_' . intval( $field_id ), // phpcs:ignore 'name' => array( '_fields', intval( $field_id ), 'alt_text' ), 'field_id' => intval( $field_id ), 'tooltip' => esc_html__( 'Provide text for the ALT tag of this image.', 'charitable' ), ) ); echo $charitable_builder_form_fields->generate_hidden_field( // phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped isset( $settings['default'] ) ? $settings['default'] : false, array( 'id' => 'field_' . esc_attr( $this->type ) . '_default' . '_' . intval( $field_id ), // phpcs:ignore 'name' => array( '_fields', intval( $field_id ), 'default' ), 'field_id' => intval( $field_id ), ) ); echo $charitable_builder_form_fields->generate_number_slider( // phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped isset( $settings['width_percentage'] ) ? $settings['width_percentage'] : 100, esc_html__( 'Width', 'charitable' ), array( 'id' => 'field_' . esc_attr( $this->type ) . '_width_percentage' . '_' . intval( $field_id ), // phpcs:ignore 'name' => array( '_fields', intval( $field_id ), 'width_percentage' ), 'field_type' => esc_attr( $this->type ), 'field_id' => intval( $field_id ), 'symbol' => '%', 'min' => 0, 'min_actual' => 40, 'css_class' => 'charitable-indicator-on-hover', 'tooltip' => esc_html__( 'Adjust the width of the field within the column.', 'charitable' ), ) ); echo $charitable_builder_form_fields->generate_align( // phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped isset( $settings['align'] ) ? $settings['align'] : esc_attr( $this->align_default ), esc_html__( 'Align', 'charitable' ), array( 'id' => 'field_' . esc_attr( $this->type ) . '_align' . '_' . intval( $field_id ), // phpcs:ignore 'name' => array( '_fields', intval( $field_id ), 'align' ), 'field_id' => intval( $field_id ), ) ); echo $charitable_builder_form_fields->generate_text( // phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped isset( $settings['css_class'] ) ? $settings['css_class'] : false, esc_html__( 'CSS Class', 'charitable' ), array( 'id' => 'field_' . esc_attr( $this->type ) . '_css_class' . '_' . intval( $field_id ), 'name' => array( '_fields', intval( $field_id ), 'css_class' ), 'field_id' => intval( $field_id ), 'tooltip' => esc_html__( 'Add CSS classes (seperated by a space) for this field to customize it\'s appearance in your theme.', 'charitable' ), ) ); $html = ob_get_clean(); return $html; } /** * Return HTML for display via ajax. * * @since 1.8.0 * @version 1.8.9.1 */ public function settings_display_ajax() { // phpcs:disable WordPress.Security.NonceVerification.Missing $field_id = isset( $_POST['field_id'] ) ? intval( $_POST['field_id'] ) : false; $campaign_id = isset( $_POST['campaign_id'] ) ? intval( $_POST['campaign_id'] ) : false; // phpcs:enable WordPress.Security.NonceVerification.Missing if ( false === $field_id ) { return; } $charitable_builder_form_fields = new Charitable_Builder_Form_Fields(); $campaign_data = get_post_meta( $campaign_id, 'campaign_settings_v2', true ); $settings = isset( $campaign_data['fields'][ $field_id ] ) ? $campaign_data['fields'][ $field_id ] : false; ob_start(); ?> generate_number_slider( // phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped isset( $settings['width_percentage'] ) ? $settings['width_percentage'] : 100, esc_html__( 'Width', 'charitable' ), array( 'id' => 'field_' . esc_attr( $this->type ) . '_width_percentage' . '_' . intval( $field_id ), // phpcs:ignore 'name' => array( '_fields', intval( $field_id ), 'width_percentage' ), 'field_type' => esc_attr( $this->type ), 'field_id' => intval( $field_id ), 'symbol' => '%', 'min' => 10, 'tooltip' => esc_html__( 'Adjust the width of the field within the column.', 'charitable' ), ) ); echo $charitable_builder_form_fields->generate_align( // phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped isset( $settings['align'] ) ? $settings['align'] : false, esc_html__( 'Align', 'charitable' ), array( 'id' => 'field_' . esc_attr( $this->type ) . '_align' . '_' . intval( $field_id ), // phpcs:ignore 'name' => array( '_fields', intval( $field_id ), 'align' ), 'field_id' => intval( $field_id ), ) ); echo $charitable_builder_form_fields->generate_text( // phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped $settings['css_class'], esc_html__( 'CSS Class', 'charitable' ), array( 'id' => 'field_' . esc_attr( $this->type ) . '_css_class', 'name' => array( 'fields', esc_attr( $this->type ), 'css_class' ), 'tooltip' => esc_html( $this->tooltip ), ) ); ?> $html ) ); exit; } /** * Enqueue frontend limit option js. * * @since 1.8.0 * * @param string $min The suffix, if any, to include for the minified version. */ public function builder_js( $min = '' ) { } /** * Enqueue frontend limit option js. * * @since 1.8.0 * * @param string $min The suffix, if any, to include for the minified version. */ public function frontend_js( $min = '' ) { } /** * Format and sanitize field. * * @since 1.8.0 * * @param int $field Photo ID. * @param mixed $field_data Photo value that was submitted. * @param array $campaign_data Form data and settings. */ public function format( $field, $field_data = false, $campaign_data = false ) { } /** * Validate field on form submit. * * @since 1.8.0 * * @param int $field Photo ID. * @param mixed $field_data Photo value that was submitted. * @param array $campaign_data Form data and settings. */ public function validate( $field, $field_data = false, $campaign_data = false ) { } } new Charitable_Field_Photo(); endif;