| Server IP : 121.121.20.254 / Your IP : 216.73.216.202 Web Server : Microsoft-IIS/10.0 System : Windows NT WEB-SERVER 10.0 build 20348 (Windows Server 2022) AMD64 User : IUSR ( 0) PHP Version : 8.3.28 Disable Function : NONE MySQL : ON | cURL : ON | WGET : OFF | Perl : OFF | Python : OFF | Sudo : OFF | Pkexec : OFF Directory : C:/inetpub/wwwroot/KnowledgeBase/wp-content/plugins/betterdocs-pro/includes/Core/ |
Upload File : |
<?php
namespace WPDeveloper\BetterDocsPro\Core;
use WPDeveloper\BetterDocs\Utils\Base;
use WPDeveloper\BetterDocs\Utils\CSSGenerator;
class InstantAnswer extends Base {
private $settings;
private $is_visible = true;
public function __construct( Settings $settings ) {
$this->settings = $settings;
if ( is_admin() ) {
add_action( 'admin_enqueue_scripts', [$this, 'scripts'] );
add_action( 'admin_footer', [$this, 'add_preview'] );
}
if ( ! $this->settings->get( 'enable_disable', false ) ) {
return;
}
add_filter( 'rest_doc_category_query', [$this, 'order_ia_doc_taxonomies'], 10, 2 );
if ( ! is_admin() ) {
add_action( 'wp_enqueue_scripts', [$this, 'scripts'] );
add_action( 'wp_footer', [$this, 'add_ia'] );
}
//Added to whitelist I/A styles on Thrive Builder Theme(fix)
add_filter( 'tcb_lp_strip_css_whitelist', [$this, 'white_list_css_thrive_builder'], 10, 2 );
}
public function white_list_css_thrive_builder( $style_handles, $tcb_landing_page ) {
if ( ! in_array( 'betterdocs-instant-answer', $style_handles ) ) {
array_push( $style_handles, 'betterdocs-instant-answer' );
}
return $style_handles;
}
public function add_preview() {
static $printed = false;
$screen = get_current_screen();
if ( $screen->id !== 'betterdocs_page_betterdocs-settings' || $printed ) {
return;
}
$preview_visiable = $this->settings->get( 'ia_enable_preview', false );
$this->add_ia( $preview_visiable );
$printed = true;
}
private function is_page( $conditions = [] ) {
return is_page() && ! empty( $conditions ) && ( in_array( "all", $conditions ) || is_page( $conditions ) );
}
private function is_post_type_archive( $conditions = [] ) {
return is_archive() && ! is_tax() && ! is_category() && ! is_tag() && ! empty( $conditions ) && (
in_array( "all", $conditions ) || is_post_type_archive( $conditions )
);
}
private function is_other_archive( $conditions = [] ) {
return is_archive() && ! empty( $conditions ) && (
in_array( "post", $conditions ) && is_date() || is_author() || is_day()
);
}
private function is_taxonomy( $conditions = [], $queried_object = null ) {
return ( is_tax() || is_category() || is_tag() ) && ! empty( $conditions ) && (
in_array( "all", $conditions ) || in_array( $queried_object->taxonomy, $conditions )
);
}
private function is_home_archive( $conditions = [] ) {
return is_home() && ! empty( $conditions ) && (
in_array( "all", $conditions ) || in_array( "post", $conditions )
);
}
private function is_post_type_product_archive( $conditions = [], $queried_object = null ) {
return is_archive() && ! empty( $conditions ) && (
in_array( "product", $conditions ) && get_taxonomy( $queried_object->taxonomy )->object_type[0] === 'product'
);
}
private function is_singular( $conditions = [] ) {
return ! is_page() && is_singular() && ! empty( $conditions ) && (
in_array( "all", $conditions ) || is_singular( $conditions )
);
}
public function ia_conditions() {
$display_ia_pages = $this->settings->get_raw_field( 'display_ia_pages' );
$display_ia_archives = $this->settings->get_raw_field( 'display_ia_archives' );
$display_ia_texonomy = $this->settings->get_raw_field( 'display_ia_texonomy' );
$display_ia_single = $this->settings->get_raw_field( 'display_ia_single' );
$queried_object = get_queried_object();
if ( $this->is_page( $display_ia_pages ) ) {
return true;
} elseif ( $this->is_taxonomy( $display_ia_texonomy, $queried_object ) ) {
return true;
} elseif ( $this->is_post_type_archive( $display_ia_archives ) ) {
return true;
} elseif ( $this->is_home_archive( $display_ia_archives ) ) {
return true;
} elseif ( $this->is_other_archive( $display_ia_archives ) ) {
return true;
} elseif ( $this->is_post_type_product_archive( $display_ia_archives, $queried_object ) ) {
return true;
} elseif ( $this->is_singular( $display_ia_single ) ) {
return true;
}
// $query_object = get_queried_object();
// if (
// is_page()
// && ( in_array( "all", $display_ia_pages ) || is_page( $display_ia_pages ) )
// ) {
// return true;
// } elseif (
// ( is_tax() || is_category() || is_tag() )
// && ( in_array( "all", $display_ia_texonomy ) || in_array( $query_object->taxonomy, $display_ia_texonomy ) )
// ) {
// return true;
// } elseif (
// is_archive()
// && ! is_tax()
// && ! is_category()
// && ! is_tag()
// && ( in_array( "all", $display_ia_archives ) || is_post_type_archive( $display_ia_archives ) )
// ) {
// return true;
// } elseif (
// is_home()
// && ( in_array( "all", $display_ia_archives ) || in_array( "post", $display_ia_archives ) )
// ) {
// return true;
// } elseif (
// is_archive()
// && ( in_array( "post", $display_ia_archives )
// && is_date()
// || is_author()
// || is_day() )
// ) {
// return true;
// } elseif (
// is_archive()
// && in_array( "product", $display_ia_archives )
// && get_taxonomy( $query_object->taxonomy )->object_type[0] === 'product'
// ) {
// return true;
// } elseif (
// ! is_page()
// && is_singular()
// && ( in_array( "all", $display_ia_single ) || is_singular( $display_ia_single ) )
// ) {
// return true;
// }
return false;
}
public function add_ia( $preview_visiable = null ) {
if ( $preview_visiable === '' && ! $this->is_visible ) {
return;
}
$style = '';
if ( $preview_visiable === false ) {
$style = 'style="display: none"';
}
echo wp_sprintf(
'<div id="betterdocs-ia" class="betterdocs-ia %s" %s"></div>',
'betterdocs-' . $this->settings->get( 'chat_position', 'right' ),
$style
);
}
public function order_ia_doc_taxonomies( $args, $request ) {
if ( empty( $args['include'] ) && empty( $_GET ) && $args['taxonomy'] == 'doc_category' ) {
$tax_limit = $this->settings->get( 'doc_category_limit', 10 );
$args['number'] = $tax_limit;
$args['hide_empty'] = 1;
$args['meta_key'] = 'doc_category_order';
$args['orderby'] = 'meta_value_num';
$args['order'] = 'ASC';
}
return $args;
}
public function scripts( $hook ) {
if ( is_admin() && $hook !== 'betterdocs_page_betterdocs-settings' ) {
return;
}
$this->is_visible = $this->ia_conditions();
if ( ! is_admin() && ! $this->is_visible ) {
return;
}
betterdocs_pro()->assets->enqueue( 'betterdocs-instant-answer', 'public/css/instant-answer.css' );
wp_add_inline_style( 'betterdocs-instant-answer', self::inline_style( $this->settings ) );
betterdocs_pro()->assets->enqueue(
'betterdocs-instant-answer',
'public/js/instant-answer.js',
['wp-i18n', 'wp-element', 'wp-hooks', 'wp-util', 'wp-components']
);
betterdocs_pro()->assets->localize( 'betterdocs-instant-answer', 'betterdocs', $this->localize_settings() );
}
public static function inline_style( $settings ) {
$_all_settings = $settings->get_all();
$css = new CSSGenerator( $_all_settings );
/**
* Common Style Settings (Primary Color)
*/
$css->add_rule(
'.betterdocs-ia-launcher-wrapper .betterdocs-ia-launcher, .betterdocs-ia-common-header, .betterdocs-ia-common-header .betterdocs-ia-search .betterdocs-ia-search-icon, .betterdocs-ia-tab-message-container .betterdocs-ia-feedback-form .betterdocs-ia-submit button, .betterdocs-ia-single-docs-wrapper .betterdocs-ia-singleDoc-footer .betterdocs-ia-footer-feedback',
$css->properties( [
'background-color' => 'ia_luncher_bg'
] )
);
$css->add_rule(
'.betterdocs-ia-single-docs-wrapper .betterdocs-ia-singleDoc-header , .betterdocs-ia-tabs .active p',
$css->properties( [
'color' => 'ia_luncher_bg'
] )
);
$css->add_rule(
'.betterdocs-ia-single-docs-wrapper .betterdocs-ia-singleDoc-header .content-icon-expand svg path, .betterdocs-ia-docs-content .content-icon svg path, .betterdocs-ia-single-docs-wrapper .betterdocs-ia-singleDoc-header .content-icon-back svg path',
$css->properties( [
'fill' => 'ia_luncher_bg'
] )
);
$css->add_rule(
'.betterdocs-ia-tabs li.active svg g path',
$css->properties( [
'fill' => 'ia_luncher_bg'
] )
);
$css->add_rule(
'.betterdocs-ia-launcher-wrapper .betterdocs-ia-launcher:hover',
$css->properties( [
'background-color' => 'ia_luncher_bg_hover'
] )
);
/**
* Header Style Settings (All Common Headers)
*/
// $css->add_rule(
// '.betterdocs-ia-common-header.home-page-header',
// $css->properties( [
// 'background-color' => 'header_background_color'
// ] )
// );
$css->add_rule(
'.betterdocs-ia-common-header .betterdocs-title:not(:last-child)',
$css->properties( [
'color' => 'ia_heading_color'
] )
);
$css->add_rule(
'.betterdocs-ia-common-header h2',
$css->properties( [
'color' => 'ia_heading_color'
] )
);
$css->add_rule(
'.betterdocs-ia-common-header .betterdocs-info',
$css->properties( [
'color' => 'ia_sub_heading_color'
] )
);
if ( isset( $_all_settings['header_background_image']['url'] ) ) {
$css->add_rule(
'.betterdocs-ia-common-header',
$css->properties( [
'background-image' => $_all_settings['header_background_image']['url']
] )
);
}
/**
* Card Style Settings (All Common Cards)
*/
$css->add_rule(
'.betterdocs-ia-docs .betterdocs-ia-docs-heading .doc-title',
$css->properties( [
'color' => 'ia_card_title_color'
] )
);
$css->add_rule(
'.betterdocs-ia-docs .betterdocs-ia-docs-heading',
$css->properties( [
'background-color' => 'ia_card_title_background_color'
] )
);
$css->add_rule(
'.betterdocs-ia-docs-content .content-item h4',
$css->properties( [
'color' => 'ia_card_title_list_color'
] )
);
$css->add_rule(
'.betterdocs-ia-docs-content .content-item p',
$css->properties( [
'color' => 'ia_card_list_description_color'
] )
);
$css->add_rule(
'.betterdocs-ia-docs-content',
$css->properties( [
'background-color' => 'ia_card_list_background_color'
] )
);
// $css->add_rule(
// '.betterdocs-ia-docs-content .content-icon i',
// $css->properties( [
// 'color' => 'ia_card_list_arrow_color'
// ] )
// );
/**
* Search Style Settings (All Common Search Box)
*/
$css->add_rule(
'.betterdocs-ia-common-header .betterdocs-ia-search, .betterdocs-ia-common-header .betterdocs-ia-search .betterdocs-ia-search-field',
$css->properties( [
'background-color' => 'ia_searchbox_bg'
] )
);
$css->add_rule(
'.betterdocs-ia-common-header .betterdocs-ia-search .betterdocs-ia-search-field::placeholder',
$css->properties( [
'color' => 'ia_search_box_placeholder_text_color'
] )
);
$css->add_rule(
'.betterdocs-ia-common-header .betterdocs-ia-search .betterdocs-ia-search-field',
$css->properties( [
'color' => 'ia_search_box_input_text_color'
] )
);
$css->add_rule(
'.betterdocs-ia-common-header .betterdocs-ia-search .betterdocs-ia-search-icon svg',
$css->properties( [
'fill' => 'ia_searc_icon_color'
] )
);
/**
* All Tabs Style Settings (All Common Tabs)
*/
$css->add_rule(
'.betterdocs-ia-tabs',
$css->properties( [
'background-color' => 'ia_launcher_tabs_background_color'
] )
);
$css->add_rule(
'.betterdocs-ia-tabs li p',
$css->properties( [
'color' => 'ia_launcher_tabs_text_color'
] )
);
/**
* Message Style Settings
*/
$css->add_rule(
'.betterdocs-ia-tab-message-container .message__header .header__content h4',
$css->properties( [
'color' => 'ia_message_tab_title_font_color'
] )
);
$css->add_rule(
'.betterdocs-ia-tab-message-container .message__header .header__content p',
$css->properties( [
'color' => 'ia_message_tab_subtitle_font_color'
] )
);
// $css->add_rule(
// '.betterdocs-ia-tab-message-container .betterdocs-ia-feedback-form .betterdocs-ia-submit button',
// $css->properties( [
// 'background-color' => 'ia_message_button_background_color'
// ] )
// );
// $css->add_rule(
// '.betterdocs-ia-tab-message-container .betterdocs-ia-feedback-form .betterdocs-ia-submit button',
// $css->properties( [
// 'color' => 'ia_message_button_text_color'
// ] )
// );
$css->add_rule(
'.betterdocs-ia-tab-message-container .betterdocs-ia-feedback-form .betterdocs-ia-group .ia-input, .betterdocs-ia-tab-message-container .betterdocs-ia-feedback-form .betterdocs-ia-group > textarea',
$css->properties( [
'background-color' => 'ia_ask_bg_color'
] )
);
$css->add_rule(
'.betterdocs-ia-tab-message-container .betterdocs-ia-feedback-form .betterdocs-ia-email-group p, .betterdocs-ia-tab-message-container .betterdocs-ia-feedback-form .betterdocs-ia-name-group p, .betterdocs-ia-tab-message-container .betterdocs-ia-feedback-form .betterdocs-ia-subject-group p, .betterdocs-ia-tab-message-container .betterdocs-ia-feedback-form .betterdocs-ia-message-group p',
$css->properties( [
'color' => 'ia_message_input_label_text_color'
] )
);
$css->add_rule(
'.betterdocs-ia-tab-message-container .betterdocs-ia-feedback-form .betterdocs-ia-attachments-group button',
$css->properties( [
'background-color' => 'ia_message_upload_button_background_color'
] )
);
$css->add_rule(
'.betterdocs-ia-tab-message-container .betterdocs-ia-feedback-form .betterdocs-ia-attachments-group p',
$css->properties( [
'color' => 'ia_message_upload_text_color'
] )
);
/**
* Single Doc Style Settings
*/
$css->add_rule(
'.betterdocs-ia-single-docs-wrapper .betterdocs-ia-singleDoc-content .doc-title',
$css->properties( [
'color' => 'ia_single_doc_title_font_color'
] )
);
$css->add_rule(
'.betterdocs-ia-single-docs-wrapper .betterdocs-ia-singleDoc-header.on-scroll h2',
$css->properties([
'color' => 'ia_single_title_header_font_color'
])
);
$css->add_rule(
'.betterdocs-ia-single-docs-wrapper .betterdocs-ia-singleDoc-header',
$css->properties( [
'background-color' => 'ia_single_doc_title_header_bg_color'
] )
);
// $css->add_rule(
// '.betterdocs-ia-single-docs-wrapper .betterdocs-ia-singleDoc-header .content-icon-back i',
// $css->properties( [
// 'color' => 'ia_single_doc_back_icon_color'
// ] )
// );
// $css->add_rule(
// '.betterdocs-ia-single-docs-wrapper .betterdocs-ia-singleDoc-header .content-icon-expand i',
// $css->properties( [
// 'color' => 'ia_single_expand_icon_color'
// ] )
// );
$css->add_rule(
'.betterdocs-ia-single-docs-wrapper .betterdocs-ia-singleDoc-header .content-icon-back, .betterdocs-ia-single-docs-wrapper .betterdocs-ia-singleDoc-header .content-icon-expand',
$css->properties( [
'background-color' => 'ia_single_icons_bg_color'
] )
);
$css->add_rule(
'.betterdocs-ia-single-docs-wrapper .betterdocs-ia-singleDoc-footer .betterdocs-ia-footer-feedback .betterdocs-ia-reaction-group .ia-reaction',
$css->properties( [
'background-color' => 'ia_reaction_primary_color'
] )
);
$css->add_rule(
'.betterdocs-ia-single-docs-wrapper .betterdocs-ia-singleDoc-footer .betterdocs-ia-footer-feedback .betterdocs-ia-reaction-group .ia-reaction .betterdocs-emo',
$css->properties( [
'fill' => 'ia_reaction_secondary_color'
] )
);
$css->add_rule(
'.betterdocs-ia-single-docs-wrapper .betterdocs-ia-singleDoc-footer .betterdocs-ia-footer-feedback p',
$css->properties( [
'color' => 'ia_reaction_title_color'
] )
);
/**
* Position Css
*/
if ( isset( $_all_settings['chat_position'] ) ) {
if ( $_all_settings['chat_position'] == 'right' ) {
$css->add_rule(
'.betterdocs-ia-launcher-wrapper',
$css->properties( [
'right' => '20'
], 'px' )
);
$css->add_rule(
'.betterdocs-ia-main-wrapper',
$css->properties( [
'right' => '20'
], 'px' )
);
}
if ( $_all_settings['chat_position'] == 'left' ) {
$css->add_rule(
'.betterdocs-ia-launcher-wrapper',
$css->properties( [
'left' => '20'
], 'px' )
);
$css->add_rule(
'.betterdocs-ia-main-wrapper',
$css->properties( [
'left' => '20'
], 'px' )
);
}
}
// $css->add_rule(
// '.betterdocs-widget-container',
// $css->properties( [
// 'z-index' => 'chat_zindex'
// ] )
// );
// $css->add_rule(
// '.betterdocs-conversation-container,
// .betterdocs-footer-wrapper, .betterdocs-launcher, .betterdocs-ask-wrapper .betterdocs-ask-submit,
// .betterdocs-footer-wrapper .bd-ia-feedback-wrap, .betterdocs-footer-wrapper .bd-ia-feedback-response',
// $css->properties( [
// 'background-color' => 'ia_accent_color'
// ] )
// );
// $css->add_rule(
// 'betterdocs-header-wrapper .betterdocs-header .inner-container.betterdocs-active-answer .toggle:first-of-type > p,
// .betterdocs-header-wrapper .betterdocs-header .inner-container.betterdocs-active-ask .toggle:last-of-type > p',
// $css->properties( [
// 'color' => 'ia_accent_color'
// ] )
// );
// $css->add_rule(
// '.betterdocs-header-wrapper .betterdocs-header .inner-container.betterdocs-active-answer .toggle:first-of-type svg,
// .betterdocs-header-wrapper .betterdocs-header .inner-container.betterdocs-active-ask .toggle:last-of-type svg',
// $css->properties( [
// 'fill' => 'ia_accent_color'
// ] )
// );
// $css->add_rule(
// '.betterdocs-header-wrapper .betterdocs-header .inner-container,
// .betterdocs-footer-wrapper .betterdocs-footer-emo > div',
// $css->properties( [
// 'background-color' => 'ia_sub_accent_color'
// ] )
// );
// $css->add_rule(
// '.betterdocs-launcher[type=button], .betterdocs-launcher[type=button]:focus ',
// $css->properties( [
// 'background-color' => 'ia_luncher_bg'
// ] )
// );
// $css->add_rule(
// '.betterdocs-widget-container .betterdocs-launcher[type=button]:hover ',
// $css->properties( [
// 'background-color' => 'ia_luncher_bg_hover'
// ], ' !important' )
// );
// $css->add_rule(
// '.betterdocs-header-wrapper .betterdocs-sub-header.betterdocs-ans-header > h3,
// .betterdocs-header-wrapper .betterdocs-sub-header.betterdocs-ask-header > h3',
// $css->properties( [
// 'color' => 'ia_heading_color'
// ] )
// );
// $css->add_rule(
// '.betterdocs-header-wrapper .betterdocs-sub-header.betterdocs-ans-header > h3.bd-ia-subtitle,
// .betterdocs-header-wrapper .betterdocs-sub-header.betterdocs-ask-header > h3.bd-ia-subtitle ',
// $css->properties( [
// 'font-size' => 'ia_heading_font_size'
// ], 'px' )
// );
// $css->add_rule(
// '.betterdocs-header-wrapper .betterdocs-sub-header.betterdocs-ans-header > p,
// .betterdocs-header-wrapper .betterdocs-sub-header.betterdocs-ask-header > p',
// $css->properties( [
// 'color' => 'ia_sub_heading_color'
// ] )
// );
// $css->add_rule(
// '.betterdocs-header-wrapper .betterdocs-sub-header.betterdocs-ans-header > p,
// .betterdocs-header-wrapper .betterdocs-sub-header.betterdocs-ask-header > p',
// $css->properties( [
// 'font-size' => 'ia_sub_heading_size'
// ], 'px' )
// );
// $css->add_rule(
// '.betterdocs-tab-content-wrapper .bdc-search-box,
// .betterdocs-tab-content-wrapper .bdc-search-box .search-button,
// .betterdocs-tab-content-wrapper .bdc-search-box input',
// $css->properties( [
// 'background-color' => 'ia_searchbox_bg'
// ] )
// );
// $css->add_rule(
// '.betterdocs-tab-content-wrapper .bdc-search-box input',
// $css->properties( [
// 'color' => 'ia_searchbox_text'
// ] )
// );
// $css->add_rule(
// '.betterdocs-tab-content-wrapper .bdc-search-box .search-button svg',
// $css->properties( [
// 'fill' => 'ia_searc_icon_color'
// ] )
// );
// $css->add_rule(
// '.betterdocs-messages-container .betterdocs-card-link',
// $css->properties( [
// 'background-color' => 'iac_article_bg'
// ] )
// );
// $css->add_rule(
// '.betterdocs-messages-container .betterdocs-card-link .betterdocs-card-title-wrapper .betterdocs-card-title',
// $css->properties( [
// 'color' => 'iac_article_title'
// ] )
// );
// $css->add_rule(
// '.betterdocs-messages-container .betterdocs-card-link .betterdocs-card-title-wrapper .betterdocs-card-title',
// $css->properties( [
// 'font-size' => 'iac_article_title_size'
// ], 'px' )
// );
// $css->add_rule(
// '.betterdocs-messages-container .betterdocs-card-link .betterdocs-card-body-wrapper .betterdocs-card-body',
// $css->properties( [
// 'color' => 'iac_article_content'
// ] )
// );
// $css->add_rule(
// '.betterdocs-messages-container .betterdocs-card-link .betterdocs-card-body-wrapper .betterdocs-card-body',
// $css->properties( [
// 'font-size' => 'iac_article_content_size'
// ], 'px' )
// );
// $css->add_rule(
// '.betterdocs-footer-wrapper .betterdocs-footer-label p',
// $css->properties( [
// 'font-size' => 'ia_feedback_title_size'
// ], 'px' )
// );
// $css->add_rule(
// '.betterdocs-footer-wrapper .betterdocs-footer-label p',
// $css->properties( [
// 'color' => 'ia_feedback_title_color'
// ] )
// );
// $css->add_rule(
// '.betterdocs-footer-wrapper .betterdocs-emo',
// $css->properties( [
// 'fill' => 'ia_feedback_icon_color'
// ] )
// );
// //Units are modified here (might create issue, removed similarity with the previous version for i/a styles)
// if ( isset( $_all_settings['ia_feedback_icon_size'] ) && $_all_settings['ia_feedback_icon_size'] > 0 ) {
// $width = $_all_settings['ia_feedback_icon_size'] * 2;
// $height = $_all_settings['ia_feedback_icon_size'] * 2;
// $css->add_rule(
// '.betterdocs-footer-wrapper .betterdocs-footer-emo > div',
// $css->properties( [
// 'width' => $width,
// 'height' => $height
// ], 'px' )
// );
// }
// $css->add_rule(
// '.betterdocs-footer-wrapper .betterdocs-emo',
// $css->properties( [
// 'width' => 'ia_feedback_icon_size',
// 'height' => 'ia_feedback_icon_size'
// ], 'px' )
// );
// $css->add_rule(
// '.betterdocs-footer-wrapper .bd-ia-feedback-response .feedback-success-icon',
// $css->properties( [
// 'width' => 'ia_response_icon_size'
// ], 'px' )
// );
// $css->add_rule(
// '.betterdocs-footer-wrapper .bd-ia-feedback-response .feedback-success-icon',
// $css->properties( [
// 'fill' => 'ia_response_icon_color'
// ] )
// );
// $css->add_rule(
// '.betterdocs-footer-wrapper .bd-ia-feedback-response .feedback-success-title',
// $css->properties( [
// 'font-size' => 'ia_response_title_size'
// ], 'px' )
// );
// $css->add_rule(
// '.betterdocs-footer-wrapper .bd-ia-feedback-response .feedback-success-title',
// $css->properties( [
// 'color' => 'ia_response_title_color'
// ] )
// );
// $css->add_rule(
// '.betterdocs-tab-ask .betterdocs-ask-wrapper input[type="text"],
// .betterdocs-tab-ask .betterdocs-ask-wrapper input[type="email"],
// .betterdocs-tab-ask .betterdocs-ask-wrapper textarea',
// $css->properties( [
// 'background-color' => 'ia_ask_bg_color'
// ] )
// );
// $css->add_rule(
// '.betterdocs-tab-ask .betterdocs-ask-wrapper .betterdocs-ask-submit',
// $css->properties( [
// 'background-color' => 'ia_ask_send_button_bg'
// ] )
// );
// $css->add_rule(
// '.betterdocs-tab-ask .betterdocs-ask-wrapper .betterdocs-ask-submit:hover',
// $css->properties( [
// 'background-color' => 'ia_ask_send_button_hover_bg'
// ] )
// );
// $css->add_rule(
// '.betterdocs-tab-ask .betterdocs-ask-wrapper .betterdocs-ask-submit.betterdocs-disable-submit',
// $css->properties( [
// 'background-color' => 'ia_ask_send_disable_button_bg'
// ] )
// );
// $css->add_rule(
// '.betterdocs-tab-ask .betterdocs-ask-wrapper .betterdocs-ask-submit.betterdocs-disable-submit:hover',
// $css->properties( [
// 'background-color' => 'ia_ask_send_disable_button_hover_bg'
// ] )
// );
// $css->add_rule(
// '.betterdocs-messages-container .betterdocs-modal-wrapper .betterdocs-modal-content-container .betterdocs-ia-content h1',
// $css->properties( [
// 'font-size' => 'iac_article_content_h1'
// ], 'px' )
// );
// $css->add_rule(
// '.betterdocs-messages-container .betterdocs-modal-wrapper .betterdocs-modal-content-container .betterdocs-ia-content h2',
// $css->properties( [
// 'font-size' => 'iac_article_content_h2'
// ], 'px' )
// );
// $css->add_rule(
// '.betterdocs-messages-container .betterdocs-modal-wrapper .betterdocs-modal-content-container .betterdocs-ia-content h3',
// $css->properties( [
// 'font-size' => 'iac_article_content_h3'
// ], 'px' )
// );
// $css->add_rule(
// '.betterdocs-messages-container .betterdocs-modal-wrapper .betterdocs-modal-content-container .betterdocs-ia-content h4',
// $css->properties( [
// 'font-size' => 'iac_article_content_h4'
// ], 'px' )
// );
// $css->add_rule(
// '.betterdocs-messages-container .betterdocs-modal-wrapper .betterdocs-modal-content-container .betterdocs-ia-content h5',
// $css->properties( [
// 'font-size' => 'iac_article_content_h5'
// ], 'px' )
// );
// $css->add_rule(
// '.betterdocs-messages-container .betterdocs-modal-wrapper .betterdocs-modal-content-container .betterdocs-ia-content h6',
// $css->properties( [
// 'font-size' => 'iac_article_content_h6'
// ], 'px' )
// );
// $css->add_rule(
// '.betterdocs-messages-container .betterdocs-modal-wrapper .betterdocs-modal-content-container .betterdocs-ia-content,
// .betterdocs-messages-container .betterdocs-modal-wrapper .betterdocs-modal-content-container .betterdocs-ia-content p,
// .betterdocs-messages-container .betterdocs-modal-wrapper .betterdocs-modal-content-container .betterdocs-ia-content strong',
// $css->properties( [
// 'font-size' => 'iac_article_content_h6'
// ], 'px' )
// );
// $css->add_rule(
// '.betterdocs-ask-wrapper input:not([type="submit"]),
// .betterdocs-ask-wrapper textarea, .betterdocs-ask-wrapper .betterdocs-attach-button',
// $css->properties( [
// 'color' => 'ia_ask_input_foreground'
// ] )
// );
// $css->add_rule( '.betterdocs-ask-wrapper .betterdocs-attach-button',
// $css->properties( [
// 'fill' => 'ia_ask_input_foreground'
// ] )
// );
// $css->add_rule(
// '.betterdocs-ask-wrapper input:not([type="submit"])::placeholder,
// .betterdocs-ask-wrapper textarea::placeholder',
// $css->properties( [
// 'color' => 'ia_ask_input_foreground'
// ] )
// );
// $css->add_rule(
// '.betterdocs-ask-wrapper input:not([type="submit"]), .betterdocs-ask-wrapper textarea',
// $css->properties( [
// 'color' => 'ia_ask_input_foreground'
// ] )
// );
// $css->add_rule(
// '.betterdocs-ask-wrapper .betterdocs-ask-submit button',
// $css->properties( [
// 'color' => 'ia_ask_send_button_color'
// ] )
// );
return $css->get_output( true );
}
public static function snippet() {
ob_start();
betterdocs_pro()->views->get( 'admin/ia-snippet', [
'styles' => self::inline_style( betterdocs()->settings ),
'scripts' => self::get_instance( betterdocs()->settings )->localize_settings(),
// 'dependencies' => ['react', 'react-dom', 'wp-hooks', 'wp-i18n', 'wp-url', 'wp-api-fetch', 'wp-escape-html', 'wp-element', 'wp-html-entities']
] );
return ob_get_clean();
}
public function localize_settings() {
$url = $this->get_rest_url();
$search_settings = $answer_settings = $chat_settings = $launcher_settings = $thanks_settings = $branding_settings = $response_settings = [];
/**
* Chat Settings
*/
$chat_settings['show'] = $this->settings->get( 'chat_tab_visibility_switch', false );
$chat_tab_icon = $this->settings->get( 'chat_tab_icon', [] );
if ( ! empty( $chat_tab_icon['url'] ) ) {
$chat_settings['icon'] = esc_url( $chat_tab_icon['url'] );
}
$chat_settings['label'] = stripslashes( $this->settings->get( 'chat_tab_title', __( 'Ask', 'betterdocs-pro' ) ) );
$chat_settings['subtitle'] = stripslashes( $this->settings->get(
'chat_subtitle_one',
__( 'Stuck with something? Send us a message.', 'betterdocs-pro' )
) );
$chat_settings['subtitle_two'] = stripslashes( $this->settings->get(
'chat_subtitle_two',
__( 'Generally, we reply within 24-48 hours.', 'betterdocs-pro' )
) );
/**
* Answer Tab Settings
*/
if ( $this->settings->get( 'answer_tab_visibility_switch', false ) ) {
$answer_settings['show'] = false;
}
$answer_tab_icon = $this->settings->get( 'answer_tab_icon', [] );
if ( ! empty( $answer_tab_icon['url'] ) ) {
$answer_settings['icon'] = esc_url( $answer_tab_icon['url'] );
}
$answer_settings['label'] = stripslashes( $this->settings->get( 'answer_tab_title', __( 'Answer', 'betterdocs-pro' ) ) );
$answer_settings['subtitle'] = stripslashes( $this->settings->get( 'answer_tab_subtitle', __( 'Instant Answer', 'betterdocs-pro' ) ) );
/**
* Search Settings
*/
$search_settings['show'] = $this->settings->get( 'search_visibility_switch', false );
$search_settings['SEARCH_URL'] = $this->get_rest_url( true );
$search_settings['SEARCH_PLACEHOLDER'] = stripslashes( $this->settings->get( 'search_placeholder_text', __( 'Search...', 'betterdocs-pro' ) ) );
$search_settings['OOPS'] = stripslashes( $this->settings->get( 'search_not_found_1', __( 'Oops...', 'betterdocs-pro' ) ) );
$search_settings['NOT_FOUND'] = stripslashes( $this->settings->get(
'search_not_found_2',
__( "We couldn’t find any docs that match your search. Try searching for a new term.", 'betterdocs-pro' )
) );
// dump( $search_settings['SEARCH_URL'] );
/**
* Response Settings
*/
if ( $this->settings->get( 'disable_response', false ) ) {
$response_settings['show'] = false;
}
// $response_settings['title'] = stripslashes( $this->settings->get( 'response_title', __( 'Thanks for the feedback', 'betterdocs-pro' ) ) );
if ( $this->settings->get( 'disable_response_icon', false ) ) {
$response_settings['icon']['show'] = false;
}
$instant_answer = [
'IA_NONCE' => wp_create_nonce('rest-nonce'),
'BASE_URL' => get_rest_url( null ),
'CHAT' => $chat_settings,
'ANSWER' => $answer_settings,
'URL' => $url,
'SEARCH' => $search_settings,
'FEEDBACK' => [
'DISPLAY' => $this->settings->get( 'ia_reaction', true ),
'SUCCESS' => stripslashes( $this->settings->get( 'response_title', __( 'Thanks for the feedback', 'betterdocs-pro' ) ) ),
'TEXT' => stripslashes( $this->settings->get( 'reaction_title', __( 'How did you feel?', 'betterdocs-pro' ) ) ),
'URL' => get_rest_url( null, '/betterdocs/v1/feedback' )
],
'RESPONSE' => $response_settings,
'ASKFORM' => [
'NAME' => __( 'Name', 'betterdocs-pro' ),
'EMAIL' => __( 'Email Address', 'betterdocs-pro' ),
'SUBJECT' => __( 'Subject', 'betterdocs-pro' ),
'TEXTAREA' => __( 'How can we help?', 'betterdocs-pro' ),
'ATTACHMENT' => __( 'Accepts .gif, .jpeg, png, pdf, jpg and .png', 'betterdocs-pro' ),
'SENDING' => __( 'Sending', 'betterdocs-pro' ),
'SEND' => __( 'Send', 'betterdocs-pro' )
],
'ASK_URL' => get_rest_url( null, '/betterdocs/v1/ask' ),
'FAQ' => [
'faq-title' => $this->settings->get( 'ia_resources_faq_title' ),
'faq-switch' => $this->settings->get( 'ia_resources_faq_switch' ),
'faq_content_type' => $this->settings->get( 'ia_resources_faq_content_type' ),
// 'faq-group-number' => $this->settings->get( 'ia_resources_faq_group_number' ),
// 'faq-list-number' => $this->settings->get( 'ia_resources_faq_list_number' ),
'faq-terms' => $this->settings->get( 'ia_resources_faq_group' ),
'faq-list' => $this->settings->get( 'ia_resources_faq_list' )
],
'DOC_CATEGORY' => [
'doc-title' => $this->settings->get( 'ia_resources_doc_category_title_text' ),
'doc-terms' => $this->settings->get( 'ia_resources_doc_categories' ),
'doc-category-switch' => $this->settings->get( 'ia_resources_doc_categories_switch' )
// 'doc-categories-number' => $this->settings->get( 'ia_resources_doc_categories_number' )
],
'HOME_TAB_TITLE' => $this->settings->get( 'home_tab_title' ),
'HOME_CONTENT' => $this->settings->get( 'content_type', 'docs' ),
'HOME_TITLE' => $this->settings->get( 'home_content_title' ),
'HOME_SUBTITLE' => $this->settings->get( 'home_content_subtitle' ),
'RESOURCES_TITLE' => $this->settings->get( 'ia_resources_general_content_title' ),
'RESOURCES_TAB_TITLE' => $this->settings->get( 'ia_resource_general_tab_title' ),
'HEADER_ICON' => $this->settings->get( 'header_background_image', [] ),
'HEADER_LOGO' => $this->settings->get( 'upload_header_logo', [] ),
'TAB_HOME_ICON' => $this->settings->get( 'upload_home_icon', [] ),
'TAB_MESSAGE_ICON' => $this->settings->get( 'upload_sendmessage_icon', [] ),
'TAB_RESOURCE_ICON' => $this->settings->get( 'upload_resource_icon', [] )
];
/**
* Launcher Settings
*/
$launcher_open_icon = $this->settings->get( 'launcher_open_icon', [] );
if ( ! empty( $launcher_open_icon['url'] ) ) {
$launcher_settings['open_icon'] = $launcher_open_icon['url'];
}
$launcher_close_icon = $this->settings->get( 'launcher_close_icon', [] );
if ( ! empty( $launcher_close_icon['url'] ) ) {
$launcher_settings['close_icon'] = $launcher_close_icon['url'];
}
if ( ! empty( $launcher_settings ) ) {
$instant_answer = array_merge( $instant_answer, ['LAUNCHER' => $launcher_settings] );
}
/**
* Branding Settings
*/
$branding_settings['show'] = $this->settings->get( 'ia_branding' );
$instant_answer = array_merge( $instant_answer, ['BRANDING' => $branding_settings] );
/**
* Thanks Settings
*/
$_thanks_title = $this->settings->get( 'ask_thanks_title', '' );
if ( ! empty( $_thanks_title ) ) {
$thanks_settings['title'] = stripslashes( $_thanks_title );
}
$_thanks_text = $this->settings->get( 'ask_thanks_text', '' );
if ( ! empty( $_thanks_text ) ) {
$thanks_settings['text'] = stripslashes( $_thanks_text );
}
if ( ! empty( $thanks_settings ) ) {
$instant_answer = array_merge( $instant_answer, ['THANKS' => $thanks_settings] );
}
return $instant_answer;
}
public function get_rest_url( $is_search = false ) {
$_query_strings_array = [];
$_content_type = $this->settings->get( 'content_type', 'docs' );
$_base_url = get_rest_url( null, 'wp/v2/docs' );
if ( has_filter( 'wpml_current_language' ) ) { // get wpml language
$lang = apply_filters( 'wpml_current_language', NULL );
if ( $lang ) {
$_query_strings_array[] = 'lang=' . $lang;
}
}
switch ( $_content_type ) {
case 'docs':
$_content_list = $this->settings->get( 'docs_list', [] );
if ( ! empty( $_content_list ) && ! in_array( 'all', $_content_list ) ) {
$_query_strings_array['include'] = $_content_list;
}
if ( ! empty( $_content_list ) && in_array( 'all', $_content_list ) ) {
$_query_strings_array['per_page'] = 100;
}
break;
case 'docs_categories':
if ( ! $is_search ) {
$_base_url = get_rest_url( null, 'wp/v2/doc_category' );
}
$_content_list = $this->settings->get( 'doc_category_list', [] );
if ( ! empty( $_content_list ) && ! in_array( 'all', $_content_list ) ) {
$_cats_list = implode( ',', $_content_list );
$_query_strings_array[$is_search ? 'doc_category' : 'include'] = $_cats_list;
}
if ( ! empty( $_content_list ) && in_array( 'all', $_content_list ) ) {
$_cats_list = implode( ',', $_content_list );
$_query_strings_array[$is_search ? 'doc_category' : 'per_page'] = -1;
}
if ( empty( $_content_list ) ) {
$limit = $this->settings->get( 'doc_category_limit', 10 );
$_query_strings_array['per_page'] = $limit;
}
break;
default:
$_query_strings_array['per_page'] = 10;
break;
}
// dump( $_query_strings_array );
$_query_strings_array = apply_filters( 'betterdocs_ia_query_string_array', $_query_strings_array, $_content_type, $is_search, $_content_list );
$_query_string = preg_replace( ['/%5B[0-9]%5D/', '/%2C/'], ['[]', ','], http_build_query( $_query_strings_array, '', '&' ) );
$_parsed_url = parse_url( $_base_url );
if ( ! empty( $_query_string ) ) {
$_parsed_url['query'] = isset( $_parsed_url['query'] ) ? "{$_parsed_url['query']}&$_query_string" : $_query_string;
}
return $this->unparse_url( $_parsed_url );
}
/**
* Unparse URL
* @param array $parsed_url
* @return string of url
* @since 1.0.0
*/
public static function unparse_url( $parsed_url ) {
$scheme = isset( $parsed_url['scheme'] ) ? $parsed_url['scheme'] . '://' : '';
$host = isset( $parsed_url['host'] ) ? $parsed_url['host'] : '';
$port = isset( $parsed_url['port'] ) ? ':' . $parsed_url['port'] : '';
$user = isset( $parsed_url['user'] ) ? $parsed_url['user'] : '';
$pass = isset( $parsed_url['pass'] ) ? ':' . $parsed_url['pass'] : '';
$pass = ( $user || $pass ) ? "$pass@" : '';
$path = isset( $parsed_url['path'] ) ? $parsed_url['path'] : '';
$query = isset( $parsed_url['query'] ) ? '?' . $parsed_url['query'] : '';
$fragment = isset( $parsed_url['fragment'] ) ? '#' . $parsed_url['fragment'] : '';
return "$scheme$user$pass$host$port$path$query$fragment";
}
}