page_title = __( 'Banner Design', 'wpconsent-cookies-banner-privacy-suite' );
parent::__construct();
}
/**
* Page scripts.
*
* @return void
*/
public function page_scripts() {
// Enqueue sortable.
wp_enqueue_script( 'jquery-ui-sortable' );
// Media.
wp_enqueue_media();
}
/**
* Page hooks.
*
* @return void
*/
public function page_hooks() {
add_action( 'admin_init', array( $this, 'save_settings' ) );
$this->views = array(
'layout' => array(
'label' => __( 'Layout', 'wpconsent-cookies-banner-privacy-suite' ),
'icon' => array(
'slug' => 'layout',
'width' => 18,
'height' => 18,
),
),
'style' => array(
'label' => __( 'Style', 'wpconsent-cookies-banner-privacy-suite' ),
'icon' => array(
'slug' => 'style',
'width' => 20,
'height' => 19,
),
),
'content' => array(
'label' => __( 'Content', 'wpconsent-cookies-banner-privacy-suite' ),
'icon' => array(
'slug' => 'content',
'width' => 20,
'height' => 22,
),
),
);
add_filter( 'wpconsent_admin_js_data', array( $this, 'banner_preview_scripts' ) );
}
/**
* Get the current tab label.
*
* @return string
*/
public function get_tab_label() {
$label = '';
if ( isset( $this->views[ $this->view ] ) ) {
$label = $this->views[ $this->view ]['label'];
}
return $label;
}
/**
* Page content.
*
* @return void
*/
public function output_content() {
$this->metabox(
// translators: %s: The name of the current tab: Layout, Style or Content.
sprintf( esc_html__( '%s Settings', 'wpconsent-cookies-banner-privacy-suite' ), $this->get_tab_label() ),
$this->banner_styles_fields()
);
wp_nonce_field( 'wpconsent_save_banner_settings', 'wpconsent_banner_settings_nonce' );
?>
view ) : ?>
view ) : ?>
view ) : ?>
view ) : ?>
view;
if ( method_exists( $this, $view_method ) ) {
$this->$view_method();
}
return ob_get_clean();
}
/**
* Get the TCF notice for the Banner Layout section.
*
* Returns an empty string by default. Pro classes override this when IAB TCF is enabled.
*
* @return string
*/
protected function get_tcf_layout_notice() {
return '';
}
/**
* Get the TCF notice for the Banner Content section.
*
* Returns an empty string by default. Pro classes override this when IAB TCF is enabled.
*
* @return string
*/
protected function get_tcf_content_notice() {
return '';
}
/**
* Output the layout view.
*
* @return void
*/
public function output_view_layout() {
echo $this->get_tcf_layout_notice(); // phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped
$this->metabox_row(
esc_html__( 'Layout', 'wpconsent-cookies-banner-privacy-suite' ),
$this->image_radio(
'banner_layout',
$this->get_banner_layouts(),
wpconsent()->settings->get_option( 'banner_layout', 'long' ),
'large'
),
'banner_layout',
'',
'',
'',
false,
'',
$this->is_tcf_field_locked( 'banner_layout' )
);
$this->metabox_row(
esc_html__( 'Position', 'wpconsent-cookies-banner-privacy-suite' ),
$this->image_radio(
'banner_long_position',
array(
'top' => array(
'label' => esc_html__( 'Top', 'wpconsent-cookies-banner-privacy-suite' ),
'img' => WPCONSENT_PLUGIN_URL . 'admin/images/banner-long-top.png',
'width' => 105,
),
'bottom' => array(
'label' => esc_html__( 'Bottom', 'wpconsent-cookies-banner-privacy-suite' ),
'img' => WPCONSENT_PLUGIN_URL . 'admin/images/banner-long-bottom.png',
),
),
wpconsent()->settings->get_option( 'banner_position', 'top' )
),
'banner_long_position',
'[name="banner_layout"]',
'long'
);
$this->metabox_row(
esc_html__( 'Position', 'wpconsent-cookies-banner-privacy-suite' ),
$this->image_radio(
'banner_floating_position',
array(
'left-top' => array(
'label' => esc_html__( 'Left Top', 'wpconsent-cookies-banner-privacy-suite' ),
'img' => WPCONSENT_PLUGIN_URL . 'admin/images/banner-floating-left-top.png',
'width' => 105,
),
'right-top' => array(
'label' => esc_html__( 'Right Top', 'wpconsent-cookies-banner-privacy-suite' ),
'img' => WPCONSENT_PLUGIN_URL . 'admin/images/banner-floating-right-top.png',
),
'left-bottom' => array(
'label' => esc_html__( 'Left Bottom', 'wpconsent-cookies-banner-privacy-suite' ),
'img' => WPCONSENT_PLUGIN_URL . 'admin/images/banner-floating-left-bottom.png',
),
'right-bottom' => array(
'label' => esc_html__( 'Right Bottom', 'wpconsent-cookies-banner-privacy-suite' ),
'img' => WPCONSENT_PLUGIN_URL . 'admin/images/banner-floating-right-bottom.png',
),
),
wpconsent()->settings->get_option( 'banner_position', 'left-top' )
),
'banner_floating_position',
'[name="banner_layout"]',
'floating'
);
}
/**
* Get the banner layouts in a method we can override in child classes.
*
* @return array
*/
public function get_banner_layouts() {
return array(
'long' => array(
'label' => esc_html__( 'Long Banner', 'wpconsent-cookies-banner-privacy-suite' ),
'img' => WPCONSENT_PLUGIN_URL . 'admin/images/banner-layout-long.png',
'width' => 190,
),
'floating' => array(
'label' => esc_html__( 'Floating Banner', 'wpconsent-cookies-banner-privacy-suite' ),
'img' => WPCONSENT_PLUGIN_URL . 'admin/images/banner-layout-floating.png',
),
'modal' => array(
'label' => esc_html__( 'Modal Banner', 'wpconsent-cookies-banner-privacy-suite' ),
'img' => WPCONSENT_PLUGIN_URL . 'admin/images/banner-layout-modal.png',
'is_pro' => true,
'pro_title' => esc_html__( 'Modal Layout is a Pro Feature', 'wpconsent-cookies-banner-privacy-suite' ),
'pro_description' => esc_html__( 'Upgrade to WPConsent Pro to unlock the modal banner and improve the consent rate for your website.', 'wpconsent-cookies-banner-privacy-suite' ),
'pro_link' => wpconsent_utm_url(
'https://wpconsent.com/lite/',
'banner-layout',
'modal'
),
),
);
}
/**
* Output the style view.
*
* @return void
*/
public function output_view_style() {
$this->metabox_row(
esc_html__( 'Banner', 'wpconsent-cookies-banner-privacy-suite' ),
'' . esc_html__( 'This feature allows you to customize the overall appearance of your banner.', 'wpconsent-cookies-banner-privacy-suite' ) . ' '
);
?>
metabox_row(
esc_html__( 'Background Color', 'wpconsent-cookies-banner-privacy-suite' ),
$this->colorpicker(
'banner_background_color',
wpconsent()->settings->get_option( 'banner_background_color', '#FFFFFF' ),
'.wpconsent-banner-holder .wpconsent-banner',
'#FFFFFF',
'background-color'
),
'banner_background_color'
);
?>
metabox_row(
esc_html__( 'Text Color', 'wpconsent-cookies-banner-privacy-suite' ),
$this->colorpicker(
'banner_text_color',
wpconsent()->settings->get_option( 'banner_text_color', '#000000' ),
'.wpconsent-banner-holder .wpconsent-banner',
'#000000',
'color'
),
'banner_text_color'
);
// Font size select.
$this->metabox_row(
esc_html__( 'Font Size', 'wpconsent-cookies-banner-privacy-suite' ),
$this->select(
'banner_font_size',
array(
'12px' => esc_html__( '12px', 'wpconsent-cookies-banner-privacy-suite' ),
'14px' => esc_html__( '14px', 'wpconsent-cookies-banner-privacy-suite' ),
'16px' => esc_html__( '16px', 'wpconsent-cookies-banner-privacy-suite' ),
'18px' => esc_html__( '18px', 'wpconsent-cookies-banner-privacy-suite' ),
'20px' => esc_html__( '20px', 'wpconsent-cookies-banner-privacy-suite' ),
'22px' => esc_html__( '22px', 'wpconsent-cookies-banner-privacy-suite' ),
'24px' => esc_html__( '24px', 'wpconsent-cookies-banner-privacy-suite' ),
'26px' => esc_html__( '26px', 'wpconsent-cookies-banner-privacy-suite' ),
'28px' => esc_html__( '28px', 'wpconsent-cookies-banner-privacy-suite' ),
'30px' => esc_html__( '30px', 'wpconsent-cookies-banner-privacy-suite' ),
),
wpconsent()->settings->get_option( 'banner_font_size', '16px' ),
false,
'',
'.wpconsent-banner-body',
'font-size'
),
'banner_font_size'
);
?>
metabox_row_separator();
$this->metabox_row(
esc_html__( 'Buttons', 'wpconsent-cookies-banner-privacy-suite' ),
'' . esc_html__( 'Customize the styles of your banner buttons.', 'wpconsent-cookies-banner-privacy-suite' ) . ' '
);
?>
metabox_row(
esc_html__( 'Button Size', 'wpconsent-cookies-banner-privacy-suite' ),
$this->select(
'banner_button_size',
array(
'small' => esc_html__( 'Small', 'wpconsent-cookies-banner-privacy-suite' ),
'regular' => esc_html__( 'Regular', 'wpconsent-cookies-banner-privacy-suite' ),
'large' => esc_html__( 'Large', 'wpconsent-cookies-banner-privacy-suite' ),
),
wpconsent()->settings->get_option( 'banner_button_size', 'regular' ),
false,
'',
'.wpconsent-banner-holder .wpconsent-banner-footer',
'class',
'wpconsent-button-size-'
),
'banner_button_size'
);
// Button corner (radius) - select with options like: rounded, slightly rounded, square.
$this->metabox_row(
esc_html__( 'Button Corner', 'wpconsent-cookies-banner-privacy-suite' ),
$this->select(
'banner_button_corner',
array(
'square' => esc_html__( 'Square', 'wpconsent-cookies-banner-privacy-suite' ),
'slightly-rounded' => esc_html__( 'Slightly Rounded', 'wpconsent-cookies-banner-privacy-suite' ),
'rounded' => esc_html__( 'Rounded', 'wpconsent-cookies-banner-privacy-suite' ),
),
wpconsent()->settings->get_option( 'banner_button_corner', 'rounded' ),
false,
'',
'.wpconsent-banner-holder .wpconsent-banner-footer',
'class',
'wpconsent-button-corner-'
),
'banner_button_corner'
);
?>
metabox_row(
esc_html__( 'Button Type', 'wpconsent-cookies-banner-privacy-suite' ),
$this->select(
'banner_button_type',
array(
'filled' => esc_html__( 'Filled', 'wpconsent-cookies-banner-privacy-suite' ),
'outlined' => esc_html__( 'Outlined', 'wpconsent-cookies-banner-privacy-suite' ),
),
wpconsent()->settings->get_option( 'banner_button_type', 'filled' ),
false,
'',
'.wpconsent-banner-holder .wpconsent-banner-footer',
'class',
'wpconsent-button-type-'
),
'banner_button_type'
);
?>
metabox_row_separator();
$this->metabox_row(
esc_html__( 'Button Color', 'wpconsent-cookies-banner-privacy-suite' ),
'' . esc_html__( 'Customize button colors.', 'wpconsent-cookies-banner-privacy-suite' ) . ' '
);
$button_bg_property = 'background-color';
if ( 'outlined' === wpconsent()->settings->get_option( 'banner_button_type', 'filled' ) ) {
$button_bg_property = 'border-color';
}
?>
metabox_row(
esc_html__( 'Accept Background', 'wpconsent-cookies-banner-privacy-suite' ),
$this->colorpicker(
'banner_accept_bg',
wpconsent()->settings->get_option( 'banner_accept_bg', '#E8B13A' ),
'#wpconsent-accept-all',
'#04194E',
$button_bg_property
),
'banner_accept_bg'
);
$this->metabox_row(
esc_html__( 'Font Color', 'wpconsent-cookies-banner-privacy-suite' ),
$this->colorpicker(
'banner_accept_color',
wpconsent()->settings->get_option( 'banner_accept_color', '#FFFFFF' ),
'#wpconsent-accept-all',
'#FFFFFF',
'color'
),
'banner_accept_color'
);
?>
metabox_row(
esc_html__( 'Cancel Background', 'wpconsent-cookies-banner-privacy-suite' ),
$this->colorpicker(
'banner_cancel_bg',
wpconsent()->settings->get_option( 'banner_cancel_bg', '#FFFFFF' ),
'#wpconsent-cancel-all',
'#04194E',
$button_bg_property
),
'banner_cancel_bg'
);
$this->metabox_row(
esc_html__( 'Font Color', 'wpconsent-cookies-banner-privacy-suite' ),
$this->colorpicker(
'banner_cancel_color',
wpconsent()->settings->get_option( 'banner_cancel_color', '#FFFFFF' ),
'#wpconsent-cancel-all',
'#FFFFFF',
'color'
),
'banner_cancel_color'
);
?>
metabox_row(
esc_html__( 'Customize Background', 'wpconsent-cookies-banner-privacy-suite' ),
$this->colorpicker(
'banner_preferences_bg',
wpconsent()->settings->get_option( 'banner_preferences_bg', '#04194E' ),
'#wpconsent-preferences-all',
'#04194E',
$button_bg_property
),
'banner_preferences_bg'
);
$this->metabox_row(
esc_html__( 'Font Color', 'wpconsent-cookies-banner-privacy-suite' ),
$this->colorpicker(
'banner_preferences_color',
wpconsent()->settings->get_option( 'banner_preferences_color', '#FFFFFF' ),
'#wpconsent-preferences-all',
'#FFFFFF',
'color'
),
'banner_preferences_color'
);
?>
settings->get_option( 'enable_consent_floating' ) ) {
$this->metabox_row_separator();
$this->metabox_row(
esc_html__( 'Floating Settings Button Design', 'wpconsent-cookies-banner-privacy-suite' ),
'' . esc_html__( 'Customize the appearance of the floating settings button that appears on your website.', 'wpconsent-cookies-banner-privacy-suite' ) . ' '
);
?>
get_tcf_content_notice(); // phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped
$this->metabox_row(
esc_html__( 'Message', 'wpconsent-cookies-banner-privacy-suite' ),
$this->wysiwyg(
'banner_message',
wpconsent()->settings->get_option( 'banner_message', wpconsent()->strings->get_string( 'banner_message' ) ),
'',
'.wpconsent-banner-body'
),
'banner_message',
'',
'',
'',
false,
'',
$this->is_tcf_field_locked( 'banner_message' )
);
$this->metabox_row_separator();
$this->metabox_row(
esc_html__( 'Buttons', 'wpconsent-cookies-banner-privacy-suite' ),
$this->buttons_content_fields(),
'',
'',
'',
'',
false,
'',
$this->is_tcf_field_locked( 'accept_button_text' )
);
$this->metabox_row(
esc_html__( 'Disable Close Button', 'wpconsent-cookies-banner-privacy-suite' ),
$this->get_checkbox_toggle(
wpconsent()->settings->get_option( 'disable_close_button' ),
'disable_close_button',
esc_html__( 'Disable the close (x) button in the banner to prevent users from dismissing it without making a choice.', 'wpconsent-cookies-banner-privacy-suite' )
),
'disable_close_button'
);
$this->metabox_row_separator();
// Add a title for the preferences panel section.
echo '' . esc_html__( 'Preferences Panel Settings', 'wpconsent-cookies-banner-privacy-suite' ) . ' ';
// Preferences Panel Settings - Accordion.
echo '';
echo '
';
echo ''; // .wpconsent-accordion-header.
echo '
'; // Not collapsed by default.
$this->metabox_row(
esc_html__( 'Preferences Panel Title', 'wpconsent-cookies-banner-privacy-suite' ),
$this->get_input_text(
'preferences_panel_title',
wpconsent()->settings->get_option( 'preferences_panel_title', wpconsent()->strings->get_string( 'preferences_panel_title' ) ),
'',
'preferences_panel_title'
),
'preferences_panel_title'
);
$this->metabox_row(
esc_html__( 'Preferences Panel Description', 'wpconsent-cookies-banner-privacy-suite' ),
$this->get_input_textarea(
'preferences_panel_description',
wpconsent()->settings->get_option( 'preferences_panel_description', wpconsent()->strings->get_string( 'preferences_panel_description' ) ),
'',
'preferences_panel_description'
),
'preferences_panel_description',
'',
'',
'',
false,
'',
$this->is_tcf_field_locked( 'preferences_panel_description' )
);
$this->metabox_row(
esc_html__( 'Cookie Policy Title', 'wpconsent-cookies-banner-privacy-suite' ),
$this->get_input_text(
'cookie_policy_title',
wpconsent()->settings->get_option( 'cookie_policy_title', wpconsent()->strings->get_string( 'cookie_policy_title' ) ),
'',
'cookie_policy_title'
),
'cookie_policy_title'
);
$this->metabox_row(
esc_html__( 'Cookie Policy Text', 'wpconsent-cookies-banner-privacy-suite' ),
$this->get_input_textarea(
'cookie_policy_text',
wpconsent()->settings->get_option( 'cookie_policy_text', wpconsent()->strings->get_string( 'cookie_policy_text' ) ),
sprintf(
// Translators: %1$s is the cookie policy placeholder ({cookie_policy}), %2$s is the privacy policy placeholder ({privacy_policy}).
esc_html__( 'This text will appear at the bottom of the Preferences panel. We recommend including the %1$s and %2$s placeholders.', 'wpconsent-cookies-banner-privacy-suite' ),
'{cookie_policy}',
'{privacy_policy}'
) . ' ' .
esc_html__( 'The placeholders will be replaced with links to the respective pages as configured in WPConsent and your WordPress Privacy settings.', 'wpconsent-cookies-banner-privacy-suite' ),
'cookie_policy_text'
),
'cookie_policy_text'
);
$this->metabox_row(
esc_html__( 'Save Preferences Button Text', 'wpconsent-cookies-banner-privacy-suite' ),
$this->get_input_text(
'save_preferences_button_text',
wpconsent()->settings->get_option( 'save_preferences_button_text', wpconsent()->strings->get_string( 'save_preferences_button_text' ) ),
'',
'save_preferences_button_text'
),
'save_preferences_button_text',
'',
'',
'',
false,
'',
$this->is_tcf_field_locked( 'save_preferences_button_text' )
);
$this->metabox_row(
esc_html__( 'Close Button Text', 'wpconsent-cookies-banner-privacy-suite' ),
$this->get_input_text(
'close_button_text',
wpconsent()->settings->get_option( 'close_button_text', wpconsent()->strings->get_string( 'close_button_text' ) ),
'',
'close_button_text'
),
'close_button_text'
);
$this->metabox_row(
esc_html__( 'Service URL Label', 'wpconsent-cookies-banner-privacy-suite' ),
$this->get_input_text(
'cookie_table_header_service_url',
wpconsent()->settings->get_option( 'cookie_table_header_service_url', wpconsent()->strings->get_string( 'cookie_table_header_service_url' ) ),
esc_html__( 'The label text for the Service URL in the cookie table.', 'wpconsent-cookies-banner-privacy-suite' ),
'cookie_table_header_service_url'
),
'cookie_table_header_service_url'
);
// GPC Settings - only show if respect_gpc is enabled.
if ( wpconsent()->settings->get_option( 'respect_gpc', 0 ) ) {
$this->metabox_row(
esc_html__( 'GPC Honored Message', 'wpconsent-cookies-banner-privacy-suite' ),
$this->get_input_text(
'gpc_toast_message',
wpconsent()->settings->get_option( 'gpc_toast_message', wpconsent()->strings->get_string( 'gpc_toast_message' ) ),
esc_html__( 'Message shown in toast notification when GPC signal is honored.', 'wpconsent-cookies-banner-privacy-suite' ),
'gpc_toast_message'
),
'gpc_toast_message'
);
$this->metabox_row(
esc_html__( 'GPC Override Message', 'wpconsent-cookies-banner-privacy-suite' ),
$this->get_input_textarea(
'gpc_override_message',
wpconsent()->settings->get_option( 'gpc_override_message', wpconsent()->strings->get_string( 'gpc_override_message' ) ),
esc_html__( 'Message users must acknowledge when overriding GPC in the preference panel.', 'wpconsent-cookies-banner-privacy-suite' ),
'gpc_override_message'
),
'gpc_override_message'
);
}
echo '
'; // .wpconsent-accordion-content
echo '
'; // .wpconsent-accordion-item
// Cookie Table Headers Section - Separate accordion item.
echo '
';
echo ''; // .wpconsent-accordion-header.
echo '
'; // Not collapsed by default.
$this->metabox_row(
esc_html__( 'Name Header', 'wpconsent-cookies-banner-privacy-suite' ),
$this->get_input_text(
'cookie_table_header_name',
wpconsent()->settings->get_option( 'cookie_table_header_name', wpconsent()->strings->get_string( 'cookie_table_header_name' ) ),
esc_html__( 'The header text for the Name column in the cookie table.', 'wpconsent-cookies-banner-privacy-suite' ),
'cookie_table_header_name'
),
'cookie_table_header_name'
);
$this->metabox_row(
esc_html__( 'Description Header', 'wpconsent-cookies-banner-privacy-suite' ),
$this->get_input_text(
'cookie_table_header_description',
wpconsent()->settings->get_option( 'cookie_table_header_description', wpconsent()->strings->get_string( 'cookie_table_header_description' ) ),
esc_html__( 'The header text for the Description column in the cookie table.', 'wpconsent-cookies-banner-privacy-suite' ),
'cookie_table_header_description'
),
'cookie_table_header_description'
);
$this->metabox_row(
esc_html__( 'Duration Header', 'wpconsent-cookies-banner-privacy-suite' ),
$this->get_input_text(
'cookie_table_header_duration',
wpconsent()->settings->get_option( 'cookie_table_header_duration', wpconsent()->strings->get_string( 'cookie_table_header_duration' ) ),
esc_html__( 'The header text for the Duration column in the cookie table.', 'wpconsent-cookies-banner-privacy-suite' ),
'cookie_table_header_duration'
),
'cookie_table_header_duration'
);
echo '
'; // .wpconsent-accordion-content
echo '
'; // .wpconsent-accordion-item
echo '
'; // .wpconsent-accordion
$this->metabox_row_separator();
$this->metabox_row(
esc_html__( 'Logo/Icon', 'wpconsent-cookies-banner-privacy-suite' ),
$this->media(
'banner_logo',
wpconsent()->settings->get_option( 'banner_logo', '' ),
'',
'.wpconsent-banner-logo'
)
);
$this->metabox_row_separator();
$this->metabox_row(
esc_html__( 'Hide Powered By', 'wpconsent-cookies-banner-privacy-suite' ),
$this->get_checkbox_toggle(
wpconsent()->settings->get_option( 'hide_powered_by' ),
'hide_powered_by',
esc_html__( 'Hide the "Powered by WPConsent" link in the frontend.', 'wpconsent-cookies-banner-privacy-suite' )
),
'hide_powered_by'
);
}
/**
* Output the footer.
*
* @return void
*/
public function output_footer() {
parent::output_footer();
$this->get_banner_preview();
}
/**
* Get the banner preview.
*
* @return void
*/
public function get_banner_preview() {
wpconsent()->banner->output_banner();
}
/**
* Get the next view based on the passed current view.
*
* @param string $current_view The current view.
*
* @return string
*/
public function get_next_view( $current_view ) {
$views = array_keys( $this->views );
$index = array_search( $current_view, $views, true );
$next = isset( $views[ $index + 1 ] ) ? $views[ $index + 1 ] : $views[0];
return $next;
}
/**
* Get the URL for the previous view based on the current view.
*
* @return string
*/
public function get_previous_view_link() {
$views = array_keys( $this->views );
$index = array_search( $this->view, $views, true );
$prev = isset( $views[ $index - 1 ] ) ? $views[ $index - 1 ] : $views[ count( $views ) - 1 ];
return add_query_arg( 'view', $prev, $this->get_page_action_url() );
}
/**
* Save settings.
*
* @return void
*/
public function save_settings() {
if ( isset( $_POST['wpconsent_banner_settings_nonce'] ) && wp_verify_nonce( sanitize_key( $_POST['wpconsent_banner_settings_nonce'] ), 'wpconsent_save_banner_settings' ) ) {
if ( ! current_user_can( 'manage_options' ) ) {
return;
}
$redirect = add_query_arg( 'message', 1, $this->get_page_action_url() );
$button_action = isset( $_POST['save_changes'] ) ? sanitize_text_field( wp_unslash( $_POST['save_changes'] ) ) : 'save';
$banner_layout = isset( $_POST['banner_layout'] ) ? sanitize_text_field( wp_unslash( $_POST['banner_layout'] ) ) : false;
$banner_background_color = isset( $_POST['banner_background_color'] ) ? sanitize_text_field( wp_unslash( $_POST['banner_background_color'] ) ) : false;
$banner_message = isset( $_POST['banner_message'] ) ? wp_kses_post( wp_unslash( $_POST['banner_message'] ) ) : false;
$current_view = 'layout';
if ( $banner_layout ) {
// We're on the layout view.
$position_input = 'banner_' . $banner_layout . '_position';
$position = isset( $_POST[ $position_input ] ) ? sanitize_text_field( wp_unslash( $_POST[ $position_input ] ) ) : false;
$settings = array(
'banner_layout' => $banner_layout,
'banner_position' => $position,
);
}
if ( $banner_background_color ) {
// We're on the Style view.
$banner_text_color = isset( $_POST['banner_text_color'] ) ? sanitize_text_field( wp_unslash( $_POST['banner_text_color'] ) ) : false;
$banner_font_size = isset( $_POST['banner_font_size'] ) ? sanitize_text_field( wp_unslash( $_POST['banner_font_size'] ) ) : false;
$banner_button_size = isset( $_POST['banner_button_size'] ) ? sanitize_text_field( wp_unslash( $_POST['banner_button_size'] ) ) : false;
$banner_button_corner = isset( $_POST['banner_button_corner'] ) ? sanitize_text_field( wp_unslash( $_POST['banner_button_corner'] ) ) : false;
$banner_button_type = isset( $_POST['banner_button_type'] ) ? sanitize_text_field( wp_unslash( $_POST['banner_button_type'] ) ) : false;
$banner_accept_bg = isset( $_POST['banner_accept_bg'] ) ? sanitize_text_field( wp_unslash( $_POST['banner_accept_bg'] ) ) : false;
$banner_accept_color = isset( $_POST['banner_accept_color'] ) ? sanitize_text_field( wp_unslash( $_POST['banner_accept_color'] ) ) : false;
$banner_cancel_bg = isset( $_POST['banner_cancel_bg'] ) ? sanitize_text_field( wp_unslash( $_POST['banner_cancel_bg'] ) ) : false;
$banner_cancel_color = isset( $_POST['banner_cancel_color'] ) ? sanitize_text_field( wp_unslash( $_POST['banner_cancel_color'] ) ) : false;
$banner_preferences_bg = isset( $_POST['banner_preferences_bg'] ) ? sanitize_text_field( wp_unslash( $_POST['banner_preferences_bg'] ) ) : false;
$banner_preferences_color = isset( $_POST['banner_preferences_color'] ) ? sanitize_text_field( wp_unslash( $_POST['banner_preferences_color'] ) ) : false;
$consent_floating_icon = isset( $_POST['consent_floating_icon'] ) ? sanitize_text_field( wp_unslash( $_POST['consent_floating_icon'] ) ) : 'preferences';
$current_view = 'style';
$settings = array(
'banner_background_color' => $banner_background_color,
'banner_text_color' => $banner_text_color,
'banner_font_size' => $banner_font_size,
'banner_button_size' => $banner_button_size,
'banner_button_corner' => $banner_button_corner,
'banner_button_type' => $banner_button_type,
'banner_accept_bg' => $banner_accept_bg,
'banner_accept_color' => $banner_accept_color,
'banner_cancel_bg' => $banner_cancel_bg,
'banner_cancel_color' => $banner_cancel_color,
'banner_preferences_bg' => $banner_preferences_bg,
'banner_preferences_color' => $banner_preferences_color,
'consent_floating_icon' => $consent_floating_icon,
);
}
// Content view.
if ( ! empty( $banner_message ) ) {
$current_view = 'content';
$accept_button = isset( $_POST['accept_button_text'] ) ? sanitize_text_field( wp_unslash( $_POST['accept_button_text'] ) ) : false;
$cancel_button = isset( $_POST['cancel_button_text'] ) ? sanitize_text_field( wp_unslash( $_POST['cancel_button_text'] ) ) : false;
$settings_button = isset( $_POST['preferences_button_text'] ) ? sanitize_text_field( wp_unslash( $_POST['preferences_button_text'] ) ) : false;
$accept_enabled = isset( $_POST['accept_button_enabled'] );
$cancel_enabled = isset( $_POST['cancel_button_enabled'] );
$preferences_enabled = isset( $_POST['preferences_button_enabled'] );
$button_order = isset( $_POST['button_order'] ) ? array_map( 'sanitize_text_field', wp_unslash( $_POST['button_order'] ) ) : array(
'accept',
'cancel',
'preferences',
);
$banner_logo = isset( $_POST['banner_logo'] ) ? sanitize_text_field( wp_unslash( $_POST['banner_logo'] ) ) : '';
$preferences_panel_title = isset( $_POST['preferences_panel_title'] ) ? sanitize_text_field( wp_unslash( $_POST['preferences_panel_title'] ) ) : '';
$preferences_panel_description = isset( $_POST['preferences_panel_description'] ) ? wp_kses_post( wp_unslash( $_POST['preferences_panel_description'] ) ) : '';
$cookie_policy_title = isset( $_POST['cookie_policy_title'] ) ? sanitize_text_field( wp_unslash( $_POST['cookie_policy_title'] ) ) : '';
$cookie_policy_text = isset( $_POST['cookie_policy_text'] ) ? wp_kses_post( wp_unslash( $_POST['cookie_policy_text'] ) ) : '';
$save_preferences_button_text = isset( $_POST['save_preferences_button_text'] ) ? sanitize_text_field( wp_unslash( $_POST['save_preferences_button_text'] ) ) : '';
$close_button_text = isset( $_POST['close_button_text'] ) ? sanitize_text_field( wp_unslash( $_POST['close_button_text'] ) ) : '';
// Cookie table headers.
$cookie_table_header_name = isset( $_POST['cookie_table_header_name'] ) ? sanitize_text_field( wp_unslash( $_POST['cookie_table_header_name'] ) ) : '';
$cookie_table_header_description = isset( $_POST['cookie_table_header_description'] ) ? sanitize_text_field( wp_unslash( $_POST['cookie_table_header_description'] ) ) : '';
$cookie_table_header_duration = isset( $_POST['cookie_table_header_duration'] ) ? sanitize_text_field( wp_unslash( $_POST['cookie_table_header_duration'] ) ) : '';
$cookie_table_header_service_url = isset( $_POST['cookie_table_header_service_url'] ) ? sanitize_text_field( wp_unslash( $_POST['cookie_table_header_service_url'] ) ) : '';
$settings = array(
'banner_message' => $banner_message,
'accept_button_text' => $accept_button,
'cancel_button_text' => $cancel_button,
'preferences_button_text' => $settings_button,
'accept_button_enabled' => $accept_enabled,
'cancel_button_enabled' => $cancel_enabled,
'preferences_button_enabled' => $preferences_enabled,
'button_order' => $button_order,
'banner_logo' => $banner_logo,
'enable_consent_banner' => isset( $_POST['enable_consent_banner'] ),
'disable_close_button' => isset( $_POST['disable_close_button'] ),
'hide_powered_by' => isset( $_POST['hide_powered_by'] ),
'preferences_panel_title' => $preferences_panel_title,
'preferences_panel_description' => $preferences_panel_description,
'cookie_policy_title' => $cookie_policy_title,
'cookie_policy_text' => $cookie_policy_text,
'save_preferences_button_text' => $save_preferences_button_text,
'close_button_text' => $close_button_text,
// Cookie table headers.
'cookie_table_header_name' => $cookie_table_header_name,
'cookie_table_header_description' => $cookie_table_header_description,
'cookie_table_header_duration' => $cookie_table_header_duration,
'cookie_table_header_service_url' => $cookie_table_header_service_url,
);
// GPC Settings.
if ( wpconsent()->settings->get_option( 'respect_gpc', 0 ) ) {
$gpc_toast_message = isset( $_POST['gpc_toast_message'] ) ? sanitize_text_field( wp_unslash( $_POST['gpc_toast_message'] ) ) : '';
$gpc_override_message = isset( $_POST['gpc_override_message'] ) ? wp_kses_post( wp_unslash( $_POST['gpc_override_message'] ) ) : '';
$settings['gpc_toast_message'] = $gpc_toast_message;
$settings['gpc_override_message'] = $gpc_override_message;
}
}
if ( 'save_continue' === $button_action ) {
$redirect = add_query_arg( 'view', $this->get_next_view( $current_view ) );
}
if ( ! empty( $settings ) ) {
wpconsent()->settings->bulk_update_options( $settings );
// Clear translation strings cache when settings change.
delete_transient( 'wpconsent_translation_strings' );
}
wp_safe_redirect( $redirect );
exit;
}
}
/**
* Override the output method so we can add our form markup for this page.
*
* @return void
*/
public function output() {
?>
array(
'label' => esc_html__( 'Accept Button', 'wpconsent-cookies-banner-privacy-suite' ),
'text' => wpconsent()->settings->get_option( 'accept_button_text', wpconsent()->strings->get_string( 'accept_button_text' ) ),
'enabled' => wpconsent()->settings->get_option( 'accept_button_enabled', true ),
),
'cancel' => array(
'label' => esc_html__( 'Reject Button', 'wpconsent-cookies-banner-privacy-suite' ),
'text' => wpconsent()->settings->get_option( 'cancel_button_text', wpconsent()->strings->get_string( 'cancel_button_text' ) ),
'enabled' => wpconsent()->settings->get_option( 'cancel_button_enabled', true ),
),
'preferences' => array(
'label' => esc_html__( 'Settings Button', 'wpconsent-cookies-banner-privacy-suite' ),
'text' => wpconsent()->settings->get_option( 'preferences_button_text', wpconsent()->strings->get_string( 'preferences_button_text' ) ),
'enabled' => wpconsent()->settings->get_option( 'preferences_button_enabled', true ),
),
);
$button_order = wpconsent()->settings->get_option( 'button_order', array_keys( $buttons ) );
ob_start();
?>